2013-09-25 3 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.rb в path/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 из /Users/min/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in ' require ' \t от test.rb: 3: in '

' – gugo

+0

Если ваша файловая система устроена согласно вашему описанию, тогда она должна работать. Потому что я тестировал то же самое. –

Смежные вопросы