2011-06-10 5 views
6

Retraso en el trabajo (2.1.4) funciona perfectamente en mi máquina de desarrollo, envío de correos electrónicos con abandono gay; sin embargo, falla al ejecutar mi servidor usando Apache/Passenger (3.0.7) . Rails 3.0.7 y ruby ​​1.9.2 en ambos por cierto.Retraso en la ejecución de un error de método no definido

he visto que hay un problema cuando se utiliza delgada donde se crea el trabajo como este:

--- !ruby/struct:Delayed::PerformableMailer 
object: !ruby/object:Class UserMailer 

cuando se debe decir:

--- !ruby/struct:Delayed::PerformableMailer 
object: !ruby/class UserMailer 

mina se crean correctamente en mi máquina de desarrollo , pero de forma incorrecta cuando se crea en el servidor.

Alguien más ha tenido este problema, ¿dónde debería empezar a buscar?

StackTrace:

{undefined method `standard_message' for #<Class:0xc6ad054> 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/performable_mailer.rb:6:in `perform'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/backend/base.rb:87:in `invoke_job'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/worker.rb:120:in `block (2 levels) in run'\n 
/usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/timeout.rb:57:in `timeout'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/worker.rb:120:in `block in run'\n 
/usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/benchmark.rb:309:in `realtime'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/worker.rb:119:in `run'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/worker.rb:177:in `reserve_and_run_one_job'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/worker.rb:104:in `block in work_off'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/worker.rb:103:in `times'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/worker.rb:103:in `work_off'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/worker.rb:78:in `block (2 levels) in start'\n 
/usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/benchmark.rb:309:in `realtime'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/worker.rb:77:in `block in start'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/worker.rb:74:in `loop'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/worker.rb:74:in `start'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/command.rb:104:in `run'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/command.rb:83:in `block in run_process'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/daemons-1.1.3/lib/daemons/application.rb:249:in `call'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/daemons-1.1.3/lib/daemons/application.rb:249:in `block in start_proc'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/daemons-1.1.3/lib/daemons/daemonize.rb:199:in `call'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/daemons-1.1.3/lib/daemons/daemonize.rb:199:in `call_as_daemon'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/daemons-1.1.3/lib/daemons/application.rb:253:in `start_proc'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/daemons-1.1.3/lib/daemons/application.rb:293:in `start'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/daemons-1.1.3/lib/daemons/controller.rb:70:in `run'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/daemons-1.1.3/lib/daemons.rb:195:in `block in run_proc'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/daemons-1.1.3/lib/daemons/cmdline.rb:109:in `call'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/daemons-1.1.3/lib/daemons/cmdline.rb:109:in `catch_exceptions'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/daemons-1.1.3/lib/daemons.rb:194:in `run_proc'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/command.rb:81:in `run_process'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/command.rb:75:in `block in daemonize'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/command.rb:73:in `times'\n 
/home/safrea/site/shared/bundle/ruby/1.9.1/gems/delayed_job-2.1.4/lib/delayed/command.rb:73:in `daemonize'\n 
script/delayed_job:5:in `<main>' 
+0

No sé por qué el trabajo se crearía de manera diferente (tal vez por la forma en que las clases se agotan y se vuelven a cargar en el convertidor), pero ¿qué error se obtiene realmente? ¿Has intentado ejecutar localmente en modo "producción"? Tal vez publicar una stacktrace. –

+0

Tengo el problema actualizando de 3.0.6 a 3.0.9 Rails. 3.0.6 (con 1.9.2) funciona bien. – KirylP

+1

Mi solución es redefinir la función 'taguri' en la clase de controlador. http://stackoverflow.com/questions/6286432/delayed-job-in-rails-failing/6776593#6776593 – KirylP

Respuesta

4

he logrado solucionar este problema.

Creé un setup_load_paths.rb hace unas semanas cuando el bundler dejó de funcionar por alguna razón. Esto significaba que el gemfile se estaba cargando en todas partes, excepto por pasajero. Esto dañó la llamada a YAML :: ENGINE.yamler = "syck", que parece ser lo que arruinó el ahorro del objeto.

He eliminado el setup_load_paths y todo está funcionando bien ahora.

+0

¡He estado depurando este problema durante bastante tiempo y me encontré con esto! ¡Excelente! – coneybeare

+0

, pero ¿qué hace este setup_load_paths.rb? No lo tengo, pero sigo teniendo este problema. ¿Que había adentro? – meta

0

Si el analizador de Syck parece no funcionar (como se menciona en la respuesta de Marc), intente utilizar el analizador de psicoactivos en su lugar.

Cuestiones relacionadas