我构建了一个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的最佳方法是什么?
答案 0 :(得分:5)
Ruby遵循标准惯例,允许您使用-
指定stdin输入,这允许您在之后传递参数。
$ ruby -- - HELLO
puts ARGV.first # outputs HELLO
在大多数情况下,不需要双击。
另一种选择是使用bash的<()
运算符将wget的输出转换为文件描述符:
$ ruby <(wget -O - http://example.com/deploy.rb) option1 option2 ...
答案 1 :(得分:2)
我修改了wget
行:
"wget -q -O http://server/deploy.rb && sudo ruby deploy.rb -p 1 --another parm"
我还没有对它进行过测试,但我的想法是将Ruby的调用链接起来而不是管道。