Encontrado este ejemplo en este blog post y la sintaxis parece un poco más limpia.
Por ejemplo, si usted tenía una tarea say_hello
, que se podría llamar con cualquier número de argumentos, así:
$ rake say_hello Earth Mars Venus
Así es como funciona:
task :say_hello do
# ARGV contains the name of the rake task and all of the arguments.
# Remove/shift the first element, i.e. the task name.
ARGV.shift
# Use the arguments
puts 'Hello arguments:', ARGV
# By default, rake considers each 'argument' to be the name of an actual task.
# It will try to invoke each one as a task. By dynamically defining a dummy
# task for every argument, we can prevent an exception from being thrown
# when rake inevitably doesn't find a defined task with that name.
ARGV.each do |arg|
task arg.to_sym do ; end
end
end
no puedo pasar el parámetro de esta manera ?? rastrillar test_rake_task [par1, par2, par3] y acceder a él ?? –
He descrito la única forma en que sé pasar los parámetros a la tarea de rake. Resulta imposible ejecutar la tarea de rake con algo como 'rake test_rake_task [par1, par2, par3]'. – lest
No es imposible ejecutar la tarea de rake como tal, la respuesta de Henry a continuación funciona para hacer justamente eso. –