我一直认为这种丑陋的东西:
require File.join(File.dirname(__FILE__), 'hirb/config')
是否有一个更漂亮的替代方案,也许是为Rails写的一个?
require_relative 'hirb/config'
require_relative '../another/file'
答案 0 :(得分:7)
最好的方法可能是准备你的负载路径,所以你不需要做所有这些。主模块或init文件引入其他几个位置并不是特别困难。
这也受RUBYLIB环境变量以及-I命令行参数的影响。
$: << File.expand_path(File.join('..', 'lib'), File.dirname(__FILE__))
答案 1 :(得分:6)
你可以做到
Dir.chdir(File.dirname(__FILE__) do
require 'hirb/config'
require '../another/file'
end
当然,这是否更好才是品味问题。
答案 2 :(得分:4)
module Kernel
def require_relative(path)
require File.join(File.dirname(caller[0]), path.to_str)
end
end