No es posible invoke
la misma tarea de rake desde un bucle more than once. Pero, quiero poder llamar al rake first
y recorrer una matriz e invocar second
en cada iteración con diferentes argumentos. Dado que invoke
solo se ejecuta la primera vez, traté de usar execute
, pero Rake::Task#execute no usa el operador splat (*) y solo toma un solo argumento.¿Cómo ejecuto las tareas de Rake con argumentos varias veces?
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
Un truco alrededor de ella es poner los argumentos a execute
en una matriz y en second
examinar la estructura de los argumentos, pero que parece, así, hacker. ¿Hay alguna otra (¿mejor?) Forma de lograr lo que me gustaría hacer?
Eso se ve resbaladizo. ¡Gracias! –