我正在使用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脚本,但没有任何更改。
之前有没有人见过这个问题?
答案 0 :(得分:0)
在rake jobs:work
会话中使用screen
,或者使用god
gem或monit
运行它,这样如果进程终止,它将“复活”