class File
def self.current_dir
dirname(fcaller[:file])
end
def self.in_current_dir(name)
join(dirname(fcaller[:file]), name)
end
end
class String
def in_current_dir
File.join(File.dirname(fcaller[:file]), self)
end
end
def __DIR__
File.dirname(fcaller[:file])
end
Гораздо читабельнее вместо
File.join(File.dir(__FILE__), 'bar.rb')
писать
File.in_current_dir('bar.rb')
или
'file.rb'.in_current_dir
И гораздо проще вместо
File.dirname(__FILE__)
писать
__DIR__