2013-09-25 62 views
0

我有一个目录树。ruby​​`require':无法加载这样的文件

- app.rb 
- folder/ 
    -one.rb 

app.rb

$:.unshift File.dirname(__FILE__) 
require 'folder/one' 

当我跑ruby app.rb,我得到这个错误:

`require': cannot load such file -- ./radius/dictionary (LoadError). 

我不知道为什么。请帮忙。

+1

你需要'文件夹/一个',你会得到一个关于加载'。/ radius/dictionary'的错误,或许在你的例子中缺少一些东西? – toro2k

+0

@ toro2k我认为,为了简单起见,OP给出了一些概念性的名字......根据他/她的FS ......但忘记了按照相同的方式编辑实际的错误信息。 –

+0

@ArupRakshit可能不是,OP代码没有问题,因为它是张贴的,我的猜测是错误来自'one.rb',但没有看到文件或完整的堆栈跟踪很难说。 – toro2k

回答

3

当您加载的文件的位置是相对于你从加载它的文件,使用require_relative

require_relative 'folder/one' 
0

尝试仅仅以下:

$:.unshift(File.dirname(__FILE__) + '/folder') 
require 'one' 

以上将工作。

你的一个不工作,你正在添加文件的目录app.rbpath/to/file。但one.rb是在path/to/file/folder/one.rb里面。所以你需要在$:中加path/to/file/folder

+0

嗨,我试了你的,然后我得到这个错误:/Users/min/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in'require' :无法加载这样的文件 - 一个(LoadError) \t from /Users/min/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in'要求' \t from test.rb:3:'

' – gugo

+0

如果您的文件系统按照您的描述进行排列,那么它应该可以工作。因为我测试过一样。 –

相关问题