2011-08-04 9 views
83

Por alguna razón, Delayed :: Job ha decidido hacer cola pero no ejecutar nada a pesar de que lo he reiniciado varias veces, incluso lo he cancelado y lo he reiniciado. No ejecutará ningún trabajo.¿Cómo le dice a un Delayed :: Job específico que se ejecute en la consola?

¿Puedo, en/consola, especificar un trabajo específico y decirle que funcione?

Ex: .. Delayed::Job.find(x).run

+0

posible duplicado de [Reintentar manual de empleo en Delayed_job] (http://stackoverflow.com/questions/3312054/manually-retry-job-in-delayed -job) – smathy

Respuesta

117

responder cómo ejecutar trabajo específico de la consola:

Delayed::Job.find(x).invoke_job

pero hay que recordar que no se ejecutará ningún otras cosas como la destrucción de empleo que se hizo o así sucesivamente simplemente ejecutando el trabajo/tarea.

+2

Lea atentamente la nota del autor de la respuesta: _ "no ejecutará ninguna otra cosa como destruir el trabajo que se hizo" _. Lo digo porque no lo leí y me estaba volviendo loco. Compruebe la respuesta de [@ DavidTuite] (http://stackoverflow.com/a/20146200/316700) – fguillen

133

También puede hacerlo de esta manera:

Delayed::Worker.new.run(Delayed::Job.last) 
+0

¡Agradable! ¡Gracias por eso! – Trip

+23

esta es la mejor respuesta, elimina un trabajo una vez hecho. Gracias – m4risU

+11

Retrasado :: Worker.new.run (Delayed :: Job.find (id)) – mrt

Cuestiones relacionadas