Rails cómo ejecutar la tarea de rake


98

¿Cómo ejecuto este archivo rake en la terminal / consola?

mi statistik.rake en lib / tasks

desc "Importer statistikker"
namespace :reklamer do
  task :iqmedier => :environment do
    ...
  end
  task :euroads => :environment do
    ...
  end
  task :mikkelsen => :environment do
    ...
  end
  task :orville => :environment do
    ...
  end
end

Respuestas:


134

Puede ejecutar tareas de Rake desde su shell ejecutando:

rake task_name

Para ejecutar desde Ruby (por ejemplo, en la consola de Rails u otra tarea de Rake):

Rake::Task['task_name'].invoke

Para ejecutar varias tareas en el mismo espacio de nombres con una sola tarea, cree la siguiente tarea nueva en su espacio de nombres:

task :runall => [:iqmedier, :euroads, :mikkelsen, :orville] do
  # This will run after all those tasks have run
end

1
¿Cómo rastrillo todas las tareas a la vez o necesito cambiar el espacio de nombres a una tarea?
Rails principiante

1
Si desea ejecutar todas las tareas a la vez, haga task: all => [: a,: b,: c] y luego ejecute rake reklamer: all
Spike Gronim

1
Eso no era parte de tu pregunta, pero tendrías que hacer una nueva tarea que llame a cada uno de ellos, para lo cual hay una abreviatura. Vea mi respuesta actualizada.
Andrew Marshall

1
@Andrew Marshall, por cierto, puede usarlo task :runall => Rake::Task.taskssi desea ejecutar todas las tareas. Pero esta línea debe declararse después de todas las tareas.
Vasiliy Ermolovich

¿Dónde debería ir la tarea: runall =>?
Rails principiante

25
Rake::Task['reklamer:orville'].invoke

o

Rake::Task['reklamer:orville'].invoke(args)

Este enfoque funcionará, pero @ andrew-marshall respondió a la forma "correcta" de agrupar las tareas de los raks.
Tom Harrison

3
proporcione una referencia si va a decir algo como 'la forma "correcta" ...'. mi respuesta fue una respuesta a la pregunta original.
Luke W

3
Como prueba teórica, intenté ejecutar Rake::Task['db:seed'].invokepero no se ejecuta, diciendo "No sé cómo compilar la tarea 'db: seed'"
lulalala

22

¿Usted ha intentado rake reklamer:iqmedier?

Mis tareas de rake personalizadas están en el directorio lib, no en lib / tasks. No estoy seguro si eso importa.


1
Quiero ejecutar todas las tareas a la vez
Principiante de Rails

14

A veces, sus tareas de rake no se cargan en la consola, en ese caso, puede probar los siguientes comandos

require "rake"
YourApp::Application.load_tasks
Rake::Task["Namespace:task"].invoke

Esas citas son malas, pero no puedo editarlas porque es una edición demasiado pequeña.
nroose

Aunque esta no es una respuesta real a la pregunta formulada. Esto es lo que estaba buscando y resolví mi problema (YourApp :: Application.load_tasks). ¡Gracias!
Dennis van de Hoef

4

Si no está seguro de cómo ejecutar una tarea de rake, primero averigüe qué tareas tiene y también enumerará los comandos para ejecutar las tareas.

Corre rake --tasksen la terminal.

Enumerará las tareas como las siguientes:

rake gobble:dev:prime             
rake gobble:dev:reset_number_of_kits                                    
rake gobble:dev:scrub_prod_data

Luego puede ejecutar su tarea con: rake gobble:dev:primecomo se indica.


1

En rails 4.2, los métodos anteriores no funcionaron.

  1. Ve a la Terminal.
  2. Cambie el directorio a la ubicación donde está presente su archivo rake.
  3. ejecute rake nombre_tarea.
  4. En el caso anterior, ejecute rake iqmedier: solo ejecutará la tarea iqmedir.
  5. ejecutar rake euroads: ejecutará solo la tarea euroads.
  6. Para ejecutar todas las tareas en ese archivo, asigne lo siguiente dentro del mismo archivo y ejecute rake all

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
    
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.