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