我在site5.com共享主机上使用delayed_job(试过tobi和collective_idea),乘客作为rails环境。
我设法完成了工作。
但是,似乎插件在首次运行后忽略了作业类源代码中的任何更改。
我已经在每次更改(touch tmp/restart.txt
)时重新启动了服务器,但它仍然忽略它。
示例:
档案:lib/xx_job.rb
class XxJob
def perform
Rails.logger.info "XX START"
TempTest.delete_all
i = 0
10.times {
i+=1
TempTest.create(:name => "XXX")
sleep(1)
}
Rails.logger.info "XX END"
end
end
在一个简单的控制器中,我打电话:
Delayed::Job.enqueue(XxJob.new)
结论我收集了:
在每次更改之间,我都重新启动了服务器。 似乎Passenger或其他东西可以节省类缓存。
如何删除此缓存?是存储在服务器的某个地方吗? (我希望我可以从共享主机访问它)
谢谢!
答案 0 :(得分:2)
最终我想到了 - 几个工作人员在后台运行,他们每个人都找到了工作并拥有自己的缓存。 我不知道如何杀死他们,所以我改变了桌子的名字几秒钟。那杀了他们:)
然后我使用http://wiki.github.com/tobi/delayed_job/running-delayedworker-as-a-daemon作为工作者开始,它运作良好。
答案 1 :(得分:2)
如果您运行延迟的作业工作程序守护程序,则需要重新启动它们以重新加载代码。另外,请记住,每个工作人员都会加载自己的rails实例。