En Capistrano, utilizando la extensión de varias etapas, tengo dos entornos: prueba y prueba.Capistrano Comprobación de una variable indefinida en la Tarea
Necesito algunas variables en testing.rb que no son necesarias en prod.rb y quiero que algunas de mis tareas puedan verificar si la variable está definida y usarla si es así, pero ignórenla si no está configurado.
Así, en testing.rb Me gustaría tener algo como:
set :foo, 'bar'
prod.rb no tendría ninguna referencia a: foo ya que no lo necesita. En una de mis tareas, me gustaría hacer algo como:
if defined?(foo)
# do something with foo
else
# do something without foo
end
pero aparece el error:
undefined local variable or method 'foo'
¿Hay una manera de probar para las variables globales definidas en la tarea? O tengo que hacer algo como:
set :foo, ''
En todos mis entornos que no necesitan la variable: foo?
Para ampliar un poco esto: ¿definido? método toma un símbolo (: foo) en lugar de una variable (foo). El método set en realidad no crea las variables ruby correctas, solo mantiene los valores en una tienda interna. Es por eso que necesita usar fetch (: foo) para obtener el valor. –
Eso funcionó, gracias. No estoy muy familiarizado con Ruby y pensé que había una solución fácil como esta, pero Google me había fallado y me perdí en la documentación. Pensé que las variables se estaban configurando de manera diferente, por lo que necesitaban comprobarse de manera diferente, pero no sabían que el uso existía. Estaba completamente perplejo. Gracias de nuevo. – Jaymon
¡Esto es una locura! Estaba tratando con definido? –