Передача аргументов интерпретатору ruby, когда stdin используется в качестве источника ruby - PullRequest
4 голосов
/ 22 июня 2011

Я создал панель развертывания rails, которая запускает скрипт ruby ​​на удаленном компьютере для обновления развернутого приложения.

Команда для запуска сценария выглядит следующим образом:

ssh test-host-02 
  "wget -q -O - http://server/deploy.rb | sudo ruby" 
  > /tmp/update-test-host-02.log 2>&1

Теперь мне нужно передать аргументы в скрипт deploy.rb.Например, какую сборку развернуть.

Каков наилучший способ передачи аргументов в deploy.rb?

Ответы [ 2 ]

5 голосов
/ 22 июня 2011

Ruby следует стандартному соглашению, позволяющему указывать ввод stdin с помощью -, что позволяет передавать аргументы после.

$ ruby -- - HELLO
puts ARGV.first # outputs HELLO

В большинстве случаев двойная тире не требуется.1005 *

Другой вариант - использовать преобразование вывода wget в дескриптор файла, используя оператор bash <():

$ ruby <(wget -O - http://example.com/deploy.rb) option1 option2 ...
2 голосов
/ 23 июня 2011

Я бы изменил строку wget:

"wget -q -O http://server/deploy.rb && sudo ruby deploy.rb -p 1 --another parm" 

Я не проверял это, но идея в том, чтобы связать вызов Руби, а не трубу в него.

...