Capistrano在Task中检查未定义的变量

Jay*_*mon 10 ruby capistrano

在使用多阶段扩展的Capistrano中,我有两个环境:prod和testing.

我需要在prod.rb中不需要的tests.rb中的一些变量,我希望我的一些任务能够检查变量是否已定义并在其中使用它,但如果未设置则忽略它.

所以,在testing.rb中我会有类似的东西:

set :foo, 'bar'
Run Code Online (Sandbox Code Playgroud)

prod.rb不会引用:foo,因为它不需要它.在我的一项任务中,我想做的事情如下:

if defined?(foo)
  # do something with foo
else
  # do something without foo
end
Run Code Online (Sandbox Code Playgroud)

但我一直收到错误:

undefined local variable or method 'foo'
Run Code Online (Sandbox Code Playgroud)

有没有办法在任务中测试未定义的全局变量?或者我必须做以下事情:

set :foo, ''
Run Code Online (Sandbox Code Playgroud)

在我的所有环境中,不需要:foo变量?

zet*_*tic 16

尝试使用Capistrano文档中的建议exists?(:foo)代替.defined?(foo)