Es ist nicht möglich, invoke
die gleiche Rake-Task innerhalb einer Schleife more than once. Aber ich möchte in der Lage sein, rake first
aufrufen und durch ein Array durchlaufen und second
bei jeder Iteration mit verschiedenen Argumenten aufrufen. Da invoke
nur beim ersten Mal ausgeführt wird, habe ich versucht, execute
zu verwenden, aber Rake::Task#execute verwendet nicht den Splat (*) -Operator und nimmt nur ein einziges Argument.Wie führe ich Rake-Aufgaben mit Argumenten mehrmals aus?
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
Ein Hack um es ist, die Argumente zu execute
in ein Array zu setzen und in second
die Struktur von args zu untersuchen, aber das scheint, gut, hackish. Gibt es einen anderen (besseren?) Weg, um das zu erreichen, was ich gerne tun würde?
Das sieht glatt aus. Vielen Dank! –