Как вызвать файл оболочки из инструмента командной строки rubygem - PullRequest
0 голосов
/ 01 июля 2019

У меня есть команда, которая должна запустить скрипт оболочки. Файл оболочки находится в корневой папке gem. Когда я выполняю полный путь, все работает нормально, но не может получить корневой путь.

Запуск скрипта из project_creator.rb

Я использовал для тестирования

system("sh /Users/user_name/folder/gem-project/lib/gem/create.sh" + param)

Пробовал:

system("sh ../lib/gem/create.sh" + param)

enter image description here

1 Ответ

1 голос
/ 01 июля 2019

Используйте __dir__, чтобы получить каталог файла Ruby.Из документов :

Возвращает канонизированный абсолютный путь к каталогу файла, из которого вызывается этот метод.Это означает, что символические ссылки в пути разрешены.Если __FILE__ равно нулю, возвращается ноль.Возвращаемое значение равно File.dirname(File.realpath(__FILE__))

Так что в вашем примере вы можете сделать что-то вроде:

script = File.join(__dir__, '..', 'create.sh')
exit_code = system("sh #{script")

Вы также можете установить cwd (текущий рабочий каталог) с помощью system:

system("create.sh", chdir: __dir__)

Или:

Dir.chdir(__dir__) { system('create.sh') }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...