#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 пожалуйста, взгляните на это