2011-01-28 8 views
47

Quiero invocar mi tarea de rake desde la consola. ¿Es factible? Si es así, ¿cómo hacerlo?¿Cómo ejecutar tareas de rake desde la consola?

yo probamos este en la consola:

require 'rake' 
Rake::Task['my_task'].invoke 

pero me da este error:

RuntimeError: Don't know how to build task 

Es como el rastrillo no puede encontrado la tarea.

cualquier ayuda sería apreciada.

Gracias

Editar: Estoy utilizando rieles 2.3.5

Respuesta

111

Ejecución de tareas Rake requiere dos pasos:

  1. Cargando Rake
  2. Cargando sus tareas Rake

Te estas perdiendo el segundo paso.

Normalmente esto se hace en el Rakefile, pero hay que hacerlo manualmente aquí: (. Asegúrese de que cambie MyRailsApp con su nombre de la aplicación Rails)

require 'rake' 
MyRailsApp::Application.load_tasks # <-- MISSING LINE 
Rake::Task['my_task'].invoke 

+0

Esto resolvió mi problema. ¡¡Gracias!! –

+2

Para obtener más opciones, consulte http://stackoverflow.com/questions/577944/how-to-run-rake-tasks-from-within-rake-tasks –

+4

Es posible que desee notar la diferencia entre decir '.invoke' y '.execute', si necesita ejecutar la tarea varias veces (como un corrector de cordura de datos con una aplicación que tarda demasiado en iniciarse), entonces querrá' ejecutar' la tarea. –

13

La forma más sencilla de hacerlo es ejecutar% x [comando] de la IRB. No estoy seguro si lo que quieres lograr sin embargo.

%x[rake db:migrate] 

EDIT: recomiendo encarecidamente utilizar .invoke como dice Daniel en la respuesta aceptada.

+0

el problema es, rastrillo doesn Parece que reconoce mi tarea. alguna idea por que? – Fajarmf

+0

¿Me puede mostrar su Rakefile? – garno

+0

funciona perfectamente @garno! lo siento, sé que ha pasado un año y de repente me encuentro con la misma necesidad. – Fajarmf

Cuestiones relacionadas