I've always thought this sort of thing ugly:
req开发者_StackOverflow中文版uire File.join(File.dirname(__FILE__), 'hirb/config')
Is there a prettier alternative, maybe one written for Rails?
require_relative 'hirb/config'
require_relative '../another/file'
The best approach is probably preparing your load path so you don't need to do all this. It's not especially difficult for your main module or init file to introduce a few other locations.
This is also affected by the RUBYLIB environment variable, as well as the -I command line parameter.
$: << File.expand_path(File.join('..', 'lib'), File.dirname(__FILE__))
You could do
Dir.chdir(File.dirname(__FILE__) do
require 'hirb/config'
require '../another/file'
end
Whether or not that's better is a matter of taste, of course.
You can extend the kernel.
module Kernel
def require_relative(path)
require File.join(File.dirname(caller[0]), path.to_str)
end
end
精彩评论