Gli argomenti vengono passati attraverso lo stack di chiamate. Devi solo assicurarti che il tuo compito di primo livello acquisisca tutti gli argomenti richiesti da tutte le dipendenze. Nel tuo caso ti consigliamo di inserire first_name
e last_name
nell'attività send_letter
.
Ecco un esempio che mostra gli argomenti denominati definiti altrove che sfociano nella dipendenza (anche se non sono definiti nella dipendenza), ma l'argomento che non corrisponde al nome dell'argomento di attività di livello superiore è nullo .
desc 'Bar'
task :bar, :nom do |task, args|
puts "BAR NOM: #{args[:nom]}"
puts "BAR NAME: #{args[:name]}"
end
desc 'Foo'
task :foo, [:name] => :bar do |task, args|
puts "FOO NAME: #{args[:name]}"
end
Esecuzione rake foo[baz]
yeilds
BAR NOM:
BAR NAME: baz
FOO NAME: baz
E 'interessante notare che l'uso args.with_defaults(nom: 'Jaques')
nel compito foo
non ha alcun effetto sul compito dipendente - nom
è ancora pari a zero.
versione Rake: rake, version 10.0.3
versione di Ruby: ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]
Grazie, grande aiuto. Ma Dio spero che le variabili metasintattiche moriranno e torneranno buoni esempi creativi. –