10
在Capistrano中使用多级扩展我有两种环境:prod和testing。Capistrano在任务中检查未定义的变量
我需要在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变量?
要扩大这一点:定义?方法使用符号(:foo)而不是变量(foo)。 set方法实际上并不创建正确的ruby变量,它只是将值保存在内部存储中。这就是为什么你需要使用fetch(:foo)来获取值。 – 2011-02-08 00:19:46