Non è possibile invoke
la stessa attività rake da un loop more than once. Ma, voglio essere in grado di chiamare rake first
e fare un ciclo attraverso una matrice e invocare second
in ogni iterazione con argomenti diversi. Dal momento che invoke
viene eseguito solo la prima volta, ho provato a utilizzare execute
, ma Rake::Task#execute non utilizza l'operatore splat (*) e accetta solo un singolo argomento.Come si eseguono le attività di Rake con gli argomenti più volte?
desc "first task"
task :first do
other_arg = "bar"
[1,2,3,4].each_with_index do |n,i|
if i == 0
Rake::Task["foo:second"].invoke(n,other_arg)
else
# this doesn't work
Rake::Task["foo:second"].execute(n,other_arg)
end
end
end
task :second, [:first_arg, :second_arg] => :prerequisite_task do |t,args|
puts args[:first_arg]
puts args[:second_arg]
# ...
end
Una trucco intorno è mettere gli argomenti execute
in una matrice e in second
esaminare la struttura di args, ma che sembra, bene, hackish. C'è un altro (migliore?) Modo di realizzare ciò che mi piacerebbe fare?
Questo sembra perfetto. Grazie! –