我正在使用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],但这似乎是一个实例变量,我无法弄清楚如何从我的部署中访问它脚本。
答案 0 :(得分:0)
解决方案:
可以通过@ parent.variables散列访问这些选项,因此如果命令行字符串为testvar=thing
,则@parent.variables[:testvar]
的值为string
。
这看起来真的很丑陋和黑客,但它确实有用。
编辑:
事实证明它也可以通过variables[:testvar]