Capistrano Проверка переменной undefined в Задаче

В Capistrano с использованием многоступенчатого расширения у меня есть две среды: prod и testing.

Мне нужно несколько переменных в test.rb, которые не нужны в prod.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'

Есть ли способ проверить глобальные переменные undefined в задаче? Или мне нужно сделать что-то вроде:

set :foo, ''

Во всех моих средах, которым не нужна переменная: foo?

Ответ 1

Попробуйте использовать exists?(:foo) вместо defined?(foo), как рекомендовано в Документах Capistrano.