2012-08-25 13 views
8

¿Es posible usar cron (a través de la gema always) para ejecutar tareas directamente en modelos de motores montables. Creo que el cron no podría comenzar desde la aplicación principal, ya que se supone que los motores montables deben estar aislados.Motor montable con cron (siempre gema)

Puedo usar siempre que esté dentro de una aplicación de rieles normales y funciona muy bien, pero tengo la necesidad de ejecutar tareas de forma similar a la del motor.

Gracias

Respuesta

3

No puede tomar Rails Engine por sí mismo y ejecutar directamente tareas, como una tarea de Rake o llamar a un modelo. Piensa en un Rails Engine como una aplicación mini Rails. Proporciona funcionalidad y características para la aplicación Rails principal de montaje. Por sí solo, el motor está incompleto. Con Engine montado en la aplicación Rails, tiene acceso a todas las configuraciones e inicializadores necesarios para iniciar y operar correctamente.

Las tareas de rastrillo para un motor montado se heredan en la aplicación principal Rails. Ejecutar el seguimiento debe incluir la lista de tareas del rastrillo del motor

rake -T 

Desde el Rails runner, puede ejecutar modelos montados el motor de rieles, librerías, etc., así. Al acceder a las características de un motor, debe usar el espacio de nombres del motor. Este es un ejemplo de la Rails Guide para acceder a un modelo de un motor:

Blorgh::Post.find(1) 
+0

Todavía soy relativamente nuevo en los motores y motores de carriles de montaje en lo que esta es una curva de aprendizaje. Entonces, por lo que mencionas, me aclara un poco al mostrarme que puedo ejecutar cron directamente en los modelos de motor, pero la ejecución debería comenzar desde la aplicación host. Al estar aislado, pensé que los motores montables eran solo eso, caja negra, pero por lo que mencionaste, lo probé y funciona muy bien para mí. Voy a marcar esta pregunta como correcta, ya que ha resuelto correctamente el problema de mi motor de rieles y me ha dado un poco más de información sobre los motores. – pieterk

0

Los diseñadores de rieles definitivamente no tenían la intención que sea posible. Siempre depende de la secuencia de comandos del corredor, que no es compatible con los complementos para montar (por una buena razón, no hay una aplicación para ejecutar con el corredor). Tal vez sea posible encontrar otra forma de ejecutar el código configurando cada vez que se use un ejecutable de ruby ​​diferente (consola de rieles, IRB, etc.) pero esto probablemente tendría resultados no deseados ya que no está en el contexto de una aplicación, por lo que tiene sin configuración o entorno.

Sin embargo, usted declara: The cron I think would not be able to start from the main app since mountable engines are supposed to be isolated, pero lo probé y ese no es el caso. Siempre que nombre la tarea del corredor apropiadamente, el archivo de configuración de su aplicación localizará la tarea adecuada en el código del complemento y podrá ejecutarlo. Por favor, avíseme si por alguna razón eso no funciona para sus necesidades particulares.

Cuestiones relacionadas