In Capistrano utilizzando l'estensione multistadio ho due ambienti: prod e testing.Capistrano Controllo della variabile non definita nell'Attività
Ho bisogno di alcune variabili in testing.rb che non sono necessarie in prod.rb e voglio che alcune delle mie attività siano in grado di controllare se la variabile è definita e usarla se lo è, ma ignorarla se non è impostato.
Così, in testing.rb vorrei avere qualcosa di simile:
set :foo, 'bar'
prod.rb non avrebbe alcun riferimento a: pippo dal momento che non ne ha bisogno. In uno dei miei compiti, mi piacerebbe fare qualcosa di simile:
if defined?(foo)
# do something with foo
else
# do something without foo
end
Ma continuo a ricevere l'errore:
undefined local variable or method 'foo'
C'è un modo per testare le variabili globali non definite nel compito? O devo fare qualcosa del tipo:
set :foo, ''
In tutti i miei ambienti che non hanno bisogno della variabile: foo?
Per espandere un po 'questo: il definito? il metodo accetta un simbolo (: pippo) piuttosto che una variabile (pippo). Il metodo set in realtà non crea vere variabili ruby, mantiene solo i valori in un archivio interno. Ecco perché è necessario utilizzare fetch (: foo) per ottenere il valore. –
Ha funzionato, grazie. Sono abbastanza estraneo a Ruby e ho pensato che ci fosse una soluzione semplice come questa, ma Google mi aveva deluso e mi mancava nella documentazione. Ho immaginato che le variabili venissero impostate in modo diverso, quindi dovevano essere controllate in modo diverso ma non sapendo di usare esiste? Ero completamente perplesso. Grazie ancora. – Jaymon
Questo è pazzo! Stavo provando con definito? –