Последние changesets к Ruby 1.9.2 больше не делают текущий каталог .
часть Вашего LOAD_PATH
. У меня есть нетривиальное число Rakefiles, которые принимают это .
часть LOAD_PATH
, таким образом, это повредило их (они сообщили, что "никакой такой файл для загрузки" для всех не требует операторов, которые базировались от пути проекта). Было ли конкретное выравнивание для того, чтобы сделать это?
Что касается фиксации, добавляя $: << "."
везде работы, но кажется невероятно hacky, и я не хочу делать это. Что предпочтительный путь состоит в том, чтобы сделать мой Rakefiles 1.9.2 + совместимым?
Это было сочтено риском "безопасности".
Вы можете обойти это, используя абсолютные пути
File.expand_path(__FILE__) et al
или делая
require './filename' (ironically).
или используя
require_relative 'filename'
или добавляя каталог "include"
ruby -I . ...
или то же самое, используя irb;
$irb -I .
'.' на вашем пути долгое время считалось плохим в мире Unix (см., например, http://www.faqs.org/faqs/unix-faq/faq/part2/section-13.html ]). Я полагаю, что ребят из Ruby убедили в целесообразности этого не делать.
Есть две причины:
Обе основаны на одном и том же базовом принципе: в общем случае вы просто не можете знать, каков текущий каталог, когда выполняется ваш код. Это означает, что когда вы требуете файл и зависите от того, что он находится в текущем каталоге, у вас нет возможности проконтролировать, будет ли этот файл там вообще, или это будет тот файл, который вы ожидаете там найти.