work rails perform method job delayed_job_active_record delayed_job active ruby-on-rails ruby-on-rails-3 delayed-job

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



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.