sintax rails escape ruby rake

ruby - rails - Cómo pasar múltiples parámetros para realizar tareas



haml to html (5)

Quiero pasar varios parámetros pero no sé los números. Tales como nombres de modelos. ¿Cómo transfiero esos parámetros a una tarea de rake y cómo accedo a esos parámetros dentro de la tarea de rake?

Me gusta, $ rake test_rake_task[par1, par2, par3]


Puede usar args.extras para iterar sobre todos los argumentos sin indicar explícitamente cuántos parámetros tiene.

Ejemplo:

desc "Bring it on, parameters!" task :infinite_parameters do |task, args| puts args.extras.count args.extras.each do |params| puts params end end

Correr:

rake infinite_parameters[''The'',''World'',''Is'',''Just'',''Awesome'',''Boomdeyada'']

Salida:

6 The World Is Just Awesome Boomdeyada


Puedes probar algo así:

rake test_rake_task SOME_PARAM=value1,value2,value3

Y en la tarea de rake:

values = ENV[''SOME_PARAM''].split('','')


Rake admite el paso de parámetros directamente a una tarea utilizando una matriz, sin usar el hack ENV.

Define tu tarea de esta manera:

task :my_task, [:first_param, :second_param] do |t, args| puts args[:first_param] puts args[:second_param] end

Y llámalo así:

rake my_task[Hello,World] => Hello World

Este artículo de Patrick Reagan en el blog de Viget lo explica muy bien.


Utilice args.values.

task :events, 1000.times.map { |i| "arg#{i}".to_sym } => :environment do |t, args| Foo.use(args.values) end


Encontré este ejemplo en esta publicación de blog y la sintaxis parece un poco más limpia.

Por ejemplo, si tuviera una tarea de say_hello , podría llamarla con cualquier número de argumentos, como por ejemplo:

$ 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