Неинициализированная константа для модели ActiveRecord в script / delayed_job, но не для рабочих мест rake: работа - PullRequest
0 голосов
/ 19 февраля 2011

Я использую Rails 2.3.8 с Ruby 1.8.7.Я создал новую модель ActiveRecord под названием Foo (сгенерированную с использованием script/generate model Foo ...) с методом #self.bar(x, y) и в контроллере, который я вызываю Foo.send_later(:bar, x, y).В моей (Windows) среде разработки это работает нормально, когда я работаю rake jobs:work.В моей (Linux) производственной среде это также работает, если я использую rake jobs:work RAILS_ENV=production, но если я запускаю RAILS_ENV=production script/delayed_job start, в файле delayed_job.log я получаю

2011-02-19T12:27:11-0800: * [Worker(delayed_job host:myhost pid:3673)] acquired lock on Foo.bar
Could not load object for job: uninitialized constant Foo
2011-02-19T12:27:11-0800: * [JOB] delayed_job host:myhost pid:3673 completed after 0.0024
2011-02-19T12:27:11-0800: 1 jobs processed at 32.4446 j/s, 0 failed ...

Мои другие отложенные заданияработают нормально, только у этого нового проблема.Foo доступен из script/console production, и я попытался touch tmp/restart.txt или даже перезапустил apache2 и затем перезапустил скрипт delayed_job, но изменений не было.

Кто-нибудь видел эту проблему раньше?*

1 Ответ

0 голосов
/ 20 февраля 2011

Используйте rake jobs:work в сеансе screen или, если не повезло, запустите его, используя гем god или monit, чтобы в случае смерти процесса он был "воскрешен".

...