El 30/05/07, Mario M. [email protected]
escribió:> Tengo un controlador con varias funciones dentro. Necesito ejecutar dos
de ellas 1 vez al dia con cron jobs. La cosa es:
Hola Mario, parece que estamos todos a lo mismo a la vez… Yo
tambiénestoy con el tema de ejecutar tareas de Rails desde cron.
Si tienes un controlador/vista que desata la acción que quieras al ser
llamada, de manera que visitándola se ejecute, una
solucióncutre-y-rápida sería poner en el cron una visita con wget (un comando
de linux para descargarte una página web), y con eso simulas una
visita desde un navegador. Lee los comentarios en mi blog sobre esto
[1].
Ahora bien, esa solución no es muy elegante, porque estás pasando por
el servidor web con lo que le estás dando carga extra (en caso de que
hagas peticiones muy a menudo y hagan operaciones costosas) y
ademástienes una URL visitable desde fuera que quizá no te interese que se
pueda descubrir. Pero bueno, como solución cutre-y-rápida, funciona
bien.
En [2] verás otras maneras propuestas para automatizar esto. La
másbásica es similar pero en lugar de visitar a un controlador/vista con
wget, ejecutas directamente métodos de un modelo con script/runner. Lo
malo de este método, dice ahí, es que tarda mucho en arrancar y
consume mucha RAM.
Ahora estoy probando un plugin llamado daemon_generator [3] que
básicamente te permite tener demonios que ejecutan lo que necesites de
tu aplicación, ellos solitos se duermen y despiertan cada X segundos.
Muy sencillo de instalar y configurar pero lamentablemente parece que
no funciona bien con Rais 1.2.x…
¿Alguien se ha peleado un poco con daemon_generator?
gracias por contestar. Creo que lo voy a hacer con un botón submit que
llame a la función del controlador y onLoader para que pulse
automáticamente el submit y con wget para acceder en el cron.