2011-04-12 24 views
56

¿Cómo ejecuto este archivo rake en terminal/consola?Rails cómo ejecutar la tarea de rake

mi statistik.rake en lib/tareas

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 

Respuesta

86

Usted no debe estar ejecutando tareas Rake en la consola de Rails, pero en su lugar en la línea de órdenes/comandos ejecutando

rake task_name 

Si realmente debe ejecutar una tarea Rake en Ruby, que debería haber capaz de hacer:

Rake::Task['task_name'].invoke 

pero eso generalmente solo se hace en una tarea de Rake para ejecutar otra.

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

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

¿Cómo realizo todas las tareas a la vez o necesito cambiar el espacio de nombres a una tarea? –

+1

Si quieres ejecutar todas las tareas a la vez haz la tarea: all => [: a,: b,: c] y luego ejecuta el rake reklamer: todo –

+1

Eso no fue parte de tu pregunta, pero tendrías que hacer una nueva tarea que llame a cada uno de ellos, que es una abreviatura de. Ver mi respuesta actualizada. –

18

¿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 –

+0

En lugar de escribir reklamer rastrillo: iqmedier, rake reklamer: euroads .... –

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

o

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

Este enfoque funcionará, pero la forma "correcta" de agrupar las tareas de raks fue respondida por @ andrew-marshall. –

+3

, por favor proporcione una referencia si va a decir algo como 'la forma' correcta '...'. mi respuesta fue una respuesta a la pregunta original. –

+2

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

1

En los carriles 4.2 los métodos anteriores no funcionaron.

  1. Ir a la Terminal.
  2. Cambie el directorio a la ubicación donde está presente su archivo de rake.
  3. run rake task_name.
  4. En el caso anterior, ejecute el rake iqmedier - ejecutará solo la tarea iqmedir.
  5. ejecutar rake euroads: ejecutará solo la tarea de los euroads.
  6. para ejecutar todas las tareas en ese archivo asignan los siguientes dentro de la mismo archivo y ejecutar el rastrillo todo

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end 
    
Cuestiones relacionadas