我在rails项目的lib目录下有一个文件。像这样 a(目录) A1 a2 a.rb
当我在a.rb中需要a1时。
require 'a/a1'
它会警告我/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in“gem_original_require”:没有要加载的文件 - a / a1(MissingSourceFile)
但是使用dirname( FILE ),它可以正常工作。
require File.dirname(__FILE__) + '/a/a1
为什么?
答案 0 :(得分:2)
代码:
requie 'a/a1'
将尝试从当前工作目录中找到目录a,这可能与您的想法不同,尤其是在从命令行以外的环境(例如rails控制台或textmate)执行时。
require File.dirname(__FILE__) + '/a/a1
将'/ a / a1附加到出现该行的文件的路径,因此无论您在哪个环境中运行,都可以确保始终获取正确的文件。