当stdin用作ruby源时,将参数传递给ruby解释器

时间:2011-06-22 17:01:31

标签: ruby ssh wget

我构建了一个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 个答案:

答案 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的调用链接起来而不是管道。