ruby on rails - rails - constante sin inicializar Retrasado:: Trabajo
rails job work (6)
¿Siguió las instrucciones de instalación en el archivo README? https://github.com/collectiveidea/delayed_job
Agrega esto a tu archivo gem:
gem ''delayed_job_active_record''
y luego ejecuta esto en la consola:
$ rails generate delayed_job:active_record
$ rake db:migrate
Debe crear la tabla de trabajos retrasados en la base de datos (esto supone que está utilizando el registro activo).
Para Rails 3, todo lo que necesita hacer es incluirlo en el archivo gem, ejecutar el código anterior para crear la tabla y migrar la base de datos, luego reinicie su servidor y listo.
He agregado la gema delayed_job a mi gemfile e instalé correctamente, pero cuando intento ejecutar la siguiente línea:
Delayed::Job.enqueue do_it(), 0, 1.minutes.from_now.getutc
Me sale el error ''constante sin inicializar Retrasado :: Trabajo''
¿Alguien puede explicar lo que necesito hacer aquí? He intentado ejecutar ''rake jobs: work'' de antemano, pero también devuelve el error ''Uninitialized constant Delayed :: Job''. Además, he agregado "require ''delayed_job''" al archivo (application.rb) sin mucha suerte.
Estoy usando el trabajo retrasado dentro de un motor (por lo que la gema se especifica en un .gemspec en lugar de Gemfile) y estaba recibiendo el mismo error. Descubrí que podía resolver el problema usando:
require ''delayed_job_active_record'' # fixes problem
más bien que
require ''delayed_job'' # doesn''t
Por si acaso, si esto aún no tiene respuesta, consulte el siguiente enlace
http://www.pipetodevnull.com/past/2010/4/14/uninitialized_constant_delayedjob/
Edición: Alternativa, solo actualice a la última versión - 2.1
Si ha actualizado a la versión delayed_job> = 3, deberá agregar esto (suponiendo que esté utilizando ActiveRecord):
# Gemfile
gem ''delayed_job_active_record''
Yo estaba luchando hace un tiempo con el mismo problema. Estaba siguiendo a Ryan Bates Screencast en delayed_job y obtuve el mismo error ''constante sin inicializar Delayed :: Job''. En el screencast, ryan crea un archivo llamado mailing_job.rb (ubicado en la carpeta lib) con el método delayed_job perform, que le permite utilizar el método de puesta en cola. Después de investigar un poco, descubrí que Rails 3 no carga automáticamente los archivos de la carpeta lib en su aplicación. (No estoy completamente seguro)
Prueba esto
En tu controlador donde usas esto:
"Delayed::Job.enqueue do_it(), 0, 1.minutes.from_now.getutc"
Trate de requerir el archivo como este.
require ''mailing_job''
class AssetsController < ApplicationController
def some_method
Delayed::Job.enqueue do_it(), 0, 1.minutes.from_now.getutc
end
end
Posibilidad de cambio de versión : si pasas de la versión 2.1.x a la versión 3.x de la gema a través de un paquete no bloqueado, es posible que tengas un problema similar.