Pregunta

¿Hay de todos modos para configurar la programación de tareas simples dentro de una aplicación Rails? Hay piezas de código que quiero ejecutar cada hora, o cada día o cada semana. No quiero dividirlos en scripts separados que luego tengo que programar a través de Cron Jobs. Si hiciera eso, entonces tendría que recordar hacer una copia de seguridad de los scripts, y si reconstruyo un servidor, tengo que ir y agregar todos los trabajos cron, parece un poco desordenado para lo que necesito.

¡Ojalá pudiera programar los trabajos en algún lugar de mi aplicación Rails y hacer que se ejecute mágicamente cuando quiero que lo hagan! ¿Algunas ideas?

¿Fue útil?

Solución

Hay gemas/complementos para esto, como Rufus-Scheduler o la gema más popular 'siempre'. Sin embargo, me gusta la solución de @douglassellers, no había oído hablar de eso.

Otros consejos

Utilizo el trabajo retrasado, una "cola de prioridad asíncrona respaldada por la base de datos" para lograr algo similar. Mira esto http://github.com/tobi/delayed_job

Todavía necesitará tener algo que inicie 'trabajos de rastrillo: trabajo', pero es mejor que tener muchos trabajos de Cron diferentes. Observe en la documentación del Atributo: Run_at: parece que podría resolver el "Programa A los trabajos en algún lugar de mi aplicación Rails y hacer que se ejecute mágicamente cuando quiero que" sean ".

Puede usar algo como Rails Cron (Gem Install Rails_Cron) para hacer esto, que gira de otro proceso de Rails dedicado a realizar tareas de fondo programadas. Recomendaría que no lo haga de esta manera, ya que la instancia de Rails adicional tendrá que ser monitoreada y detenido y comenzar junto con el resto de su aplicación y, en mi experiencia, es muy propenso a caerse.

Una mejor solución es simplemente usar Craken, http://github.com/latimes/craken, para administrar CRONTABS a través de archivos YAML en su aplicación Rails. Cada tarea programada se define en un archivo YAML y luego en la implementación Craken decide si el archivo CRONTAB de nivel del sistema debe actualizarse o no. Se conecta directamente a su archivo de implementación de Capistrano y es razonablemente llave en mano. Esto da la ventaja de aún administrar sus tareas programadas en su aplicación Rails mientras las ejecuta con el nivel del sistema operativo Cron.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top