我想在Capistrano中设置这个延迟变量,这取决于我在调用任务期间设置的一些变量
set(:installation_dir) do
if target == "staging"
"/some/path"
else
"/some/other/path"
end
end
task :foo do
p "INSTALLATION_DIR >>> #{installation_dir}"
end
如果运行任务,则会发生此错误
Hector:monitoring-agent robertj$ cap foo -s target=development
/Users/robertj/.rvm/gems/ruby-2.0.0-p0@pf/gems/capistrano-2.15.4/lib/capistrano/configuration/variables.rb:122:in
`method_missing_with_variables': undefined local variable or method `target' for
#<Capistrano::Configuration:0x007fd6a22f9100> (NameError)
这让我很生气。为什么Capistrano 2.x有一个简单的方法来访问变量,无论我打电话。
答案 0 :(得分:1)
看起来,fetch
做你想做的事情
p "INSTALLATION_DIR >>> #{fetch(:installation_dir)}"
答案 1 :(得分:0)
当你像那样运行它时,你正在设置一个环境变量。要在Capistrano脚本中使用它,您需要set :target, ENV['target']
。