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

时间:2011-02-07 21:34:00

标签: ruby capistrano

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

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

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

set :foo, 'bar'

prod.rb不会提及:foo因为它不需要它。在我的一项任务中,我想做一些事情:

if defined?(foo)
  # do something with foo
else
  # do something without foo
end

但我一直收到错误:

undefined local variable or method 'foo'

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

set :foo, ''

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

1 个答案:

答案 0 :(得分:16)

按照Capistrano docs的建议,尝试使用exists?(:foo)代替defined?(foo)