脚本/ delayed_job中ActiveRecord模型的未初始化常量,但不是rake作业:工作

时间:2011-02-19 20:56:53

标签: ruby-on-rails activerecord delayed-job

我正在使用Rails 2.3.8和Ruby 1.8.7。我使用方法Foo创建了一个名为script/generate model Foo ...的新ActiveRecord模型(使用#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 :(得分:0)

rake jobs:work会话中使用screen,或者使用god gem或monit运行它,这样如果进程终止,它将“复活”