Nie można wykonać tego samego zadania rake z pętli more than once. Ale chcę mieć możliwość wywoływania rake first
i przechodzenia przez macierz i wywoływania second
w każdej iteracji z różnymi argumentami. Ponieważ invoke
jest wykonywany tylko za pierwszym razem, próbowałem użyć execute
, ale Rake::Task#execute nie używa operatora splat (*) i przyjmuje tylko jeden argument.Jak wielokrotnie wykonywać zadania Rake z argumentami?
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
Jeden Hack wokół niego jest umieszczenie argumenty execute
do tablicy iw second
zbadać strukturę args, ale wydaje się, że dobrze, hackish. Czy istnieje inny (lepszy?) Sposób na wykonanie tego, co chciałbym zrobić?
To wygląda ślisko. Dzięki! –