Выполнение сценария ruby ​​по всему миру

Я пишу приложение для командной строки на ruby ​​и хочу запустить его глобально в своей оболочке, без необходимости предварять мой вызов ./ или с ruby <filepath> - так же, как я бегу git, brew или же rails,

Структура моего простого приложения следующая: у меня есть каталог в /Developer папка называется rubyPlug, Внутри rubyPlug находится плагин и Formulae.rb.

Я пишу приложение для командной строки на ruby ​​и хочу запустить его глобально в своей оболочке, без необходимости предварять мой вызов ./ или с ruby <filepath> - так же, как я бегу git, brew или же rails,

Структура моего простого приложения следующая: у меня есть каталог в /Developer называется rubyPlug, внутри rubyPlug является plug а также Formulae.rb, Formulae.rb где хранится весь код приложения. Plug хранит некоторый стандартный код запуска:

!/usr/bin/env ruby 
require  "/Users/theideasmith/Developer/rubyPlug/Formulae.rb"
 begin
   x = Application.new ARGV
 rescue Errno::ENOENT => err
   abort "plug: #{err.message}"
 end```

Я хочу запустить свое приложение, набрав plug <args> , Если я храню plug во всем мире, как бы я структурировать require() вызов?

Я включил #!/usr/bin/env ruby в plug, побежал chmod +x plug и попробовал sudo cp plug /usr/bin/plug. Мой сценарий запустился, но не require "/Users/.../Formulae.rb" вызов. Как мне избежать этого - нужно ли хранить родительский каталог как своего рода пакет в /usr/bin? Я включил #!/usr/bin/env ruby в plug, побежал chmod +x plug и попробовал sudo cp plug /usr/local/bin/plug, Я тогда смог набрать plug <args>, но затем я получил сообщение об ошибке, связанное с моим require звонок не работает.

Какие-либо предложения?

1 ответ

require должно работать, если вы используете абсолютный путь, то есть тот, который начинается с /, Вы также можете использовать Dir.chdir чтобы скрипт работал так, как будто его нет в /usr/bin,

Также вы должны действительно положить его в /usr/local/bin, Это подходящее место для пользовательских исполняемых файлов.

Другие вопросы по тегам