Правильно ли использовать ссылки: require '../db.rb'? - PullRequest
0 голосов
/ 12 ноября 2010

Мне нужно сослаться на мой db.rb файл, который находится ниже в дереве каталогов.

/folder1/test.rb
/db.rb
/database.yml

работает:

ruby db.rb

не возвращает ошибку.

В test.rb я сделал:

require '../db.rb'

и я получаю ошибку:

../db.rb:7:in `initialize': No such file or directory - database.yml (Errno::ENOENT)
    from ../db.rb:7:in `open'
    from ../db.rb:7
    from test.rb:1:in `require'
    from test.rb:1

Не знаете, в чем здесь проблема?

Ответы [ 2 ]

3 голосов
/ 12 ноября 2010

Относительный require сам в порядке.Однако require не меняет ваш текущий рабочий каталог.Так что он ищет database.yml в /folder1.

0 голосов
/ 12 ноября 2010

В предыдущих Ruby require включал каталог вызывающего скрипта.С этим были проблемы с безопасностью, поэтому каталог '.' был удален в 1.9.Чтобы обеспечить способ добраться до вещей в локальном каталоге, был добавлен require_relative.

http://svn.ruby -lang.org / repos / ruby ​​/ tags / v1_9_2_0 / NEWS говорит о еговключение в Core.

...