ruby требует относительных файлов

#ruby #vim #require

#ruby #vim #требует

Вопрос:

Я использую ruby версии v1.9.1 в сочетании с vim, и я выполняю свои скрипты с:

 :!ruby "%"
  

мои скрипты работают нормально, если я добавлю:

 $:.unshift File.dirname(__FILE__)
  

чтобы добавить путь к этому файлу в LOAD_PATH ruby. Если я опущу эту строку, мои require инструкции для локальных сценариев больше не будут работать.

Есть ли способ передать путь к файлу в rubys LOAD_PATH? Что-то вроде (полностью вымышленное):

 :!ruby "%" --add-to-load-path
  

Я провел некоторое исследование раньше и остановился на require_relative , но это имеет тот же эффект, что и require, и не работает.

Ответ №1:

Вы можете использовать -I опцию исполняемого файла ruby и написать что-то вроде следующего:

 :!ruby -I%:p:h. %
  

Смотрите ruby --help для получения дополнительной информации и модификаторов файлов.

Отредактировано: смотрите комментарии.

Комментарии:

1. кажется, это правильный вариант, но ваш пример добавляет только мой домашний каталог в LOAD_PATH, а не каталог, в котором находится мой файл сценария. Это может быть что-то вроде :!ruby % -I. "%:p:h" но это тоже не работает (ничего не добавляет к LOAD_PATH).

2. Вы, вероятно, хотите :!ruby % -I%:p:h , хотя я не могу это проверить.

3. Не могли бы вы (или лучше @lucapette) объяснить, что означают эти параметры? Я не понимаю эту часть %:p:h .

4. На самом деле я тестировал это у себя дома;) Итак, ваш вывод — это именно то, что вы искали. Я обновлю свой ответ.

5. @mliebelt пожалуйста, взгляните на это