Ho due compiti Rake sotto lo stesso namespace come seguire:rastrello variabile compito
namespace :db do
task :first_task => :environment do
server_name='myserver'
connect_to(server_name)
end
task :second_task => :environment do
server_name='myserver'
do_something_with(server_name)
end
end
Come si vede, entrambe le attività sono sotto il stesso spazio dei nomi ed entrambi i compiti utilizzano server_name='myserver'
variabile costante.
E 'davvero brutto definire due volte la variabile server_name
sotto lo stesso spazio dei nomi, come posso avere un posto che definisce questa variabile in modo che entrambe le attività possano usarlo?
No, non dovresti farlo. Il motivo è che non sai, dove va a finire quell'avar. Nemmeno io. Un rake è dichiarato usando un blocco, non una classe, e quindi il contesto di Ivar non è chiaro. – meandre
@meandre Qual è il problema con l'utilizzo di una variabile di istanza in questo modo? Puoi dimostrare dove potrebbe andare storto? Hai un suggerimento migliore? Vedi la sezione "Variabili di istanza nelle attività" in http://daneharrigan.com/2010/06/rake-tasks-102/ per una discussione più dettagliata. –
@meandre In realtà, le variabili di istanza definite nel modo in cui mostro vengono valutate nel contesto di 'Rake.application.in_namespace (name, & block)' (consultare https://github.com/jimweirich/rake/blob/v10.3.2 /lib/rake/dsl_definition.rb#L140). Non sono sicuro di quale sia la tua preoccupazione. –