如何将命令行参数传递给capistrano

时间:2014-02-05 11:21:22

标签: ruby command-line capistrano

我正在使用Capistrano v2.9.0。

我运行此命令:

cap deploy:tryout -S testvar=thing

我的deploy.rb包含:

namespace :deploy do
    task :tryout do
        if defined? testvar
            puts "param: #{testvar}\n"
        else
            puts "no branch!\n"
        end
    end
end

输出为“无分支!”。如何从命令行传递值?我试着查看代码,我可以看到options.rb,它将传递的参数添加到options [:pre_vars],但这似乎是一个实例变量,我无法弄清楚如何从我的部署中访问它脚本。

1 个答案:

答案 0 :(得分:0)

解决方案:

可以通过@ parent.variables散列访问这些选项,因此如果命令行字符串为testvar=thing,则@parent.variables[:testvar]的值为string

这看起来真的很丑陋和黑客,但它确实有用。

编辑: 事实证明它也可以通过variables[:testvar]

在本地获得