2010-03-24 8 views
7

Tengo una acción de controlador que genera una cantidad de informes de Excel, esto toma alrededor de 10 minutos. A veces lo llamo desde mi aplicación web, por eso es una acción.¿Cómo puedo llamar a una acción de controlador desde una tarea de rake?

Pero también quiero crear una tarea de rake para ejecutar esto, por lo que puedo programar que se ejecute automáticamente una vez por noche.

¿Alguna forma de hacerlo?

+0

Como dicen los demás, debe mover el código a un modelo. Tener cosas hechas en los controladores es una mala práctica. – kikito

Respuesta

3

¿Puede manejar la generación de informes de sus modelos? Modelos should be doing most of the work anyway y se puede acceder desde las tareas Rake:

task :reports => :environment do 
    ... 
    # Do stuff with your models. 
end 
+1

No lo creo, necesito renderizar plantillas XML para generar los informes de Excel – Janak

3

creo que tendrá que mover su código en su modelo. Dado que es malo poner conocimiento sobre la representación de salida en los modelos, sugeriría poner toda la lógica de negocios y la manipulación de datos en el modelo, pero luego poner el código de representación en su tarea de rake. Eso haría que la tarea de rake sea análoga al controlador utilizado en la web, manteniendo la separación de las preocupaciones.

Puede ver ActionView :: Base y trabajar desde allí para descubrir cómo activar la representación de plantillas.

Cuestiones relacionadas