среда, 5 декабря 2007 г.

File helpers

Используя, fcaller из предыдущего поста, я расширил функциональность класса File удобными для меня методами:

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__