RubyOnRails delayed_job在我的本地服务器上不起作用

时间:2014-04-29 16:11:54

标签: ruby-on-rails ruby-on-rails-3.2 localhost ubuntu-12.04 delayed-job

我正在开发一个具有用RubyonRails编写的Web服务器的项目。另一个人启动了这个项目的代码,我得到了所有的代码。这个服务器使用了delayed_job。生产服务器运行正常,没有任何问题。但是,当我想在我的本地服务器上运行它时,没有任何delayed_job任务运行。我没有收到任何错误,例如,当我运行rake作业时:在我的本地服务器上工作,我提交一份工作,这是输出:

[工人(主持人:ardrossan pid:20474)]开始求职者

[Worker(host:ardrossan pid:20474)] Job Delayed :: PerformableMethod(id = 2)RUNNING

[工人(主持人:ardrossan pid:20474)] 1份工作以17.9446 j / s处理,0失败

但没有产生任何结果。 关于如何让delayed_jobs在我的本地服务器上运行的任何建议都表示赞赏。

我应该提到我正在使用'rails','3.2.17'而我的操作系统是Ubuntu 12.04.4 LTS

2 个答案:

答案 0 :(得分:0)

认为你必须使用工头在本地启动后台工作人员。以下工作在我的Mac上。

来自Heroku docs:

然后,您需要告诉您的应用程序处理放入作业队列的作业,您可以将其添加到Procfile

worker:  bundle exec rake jobs:work

现在,当您使用Foreman启动应用程序时,它将开始处理您的作业队列。

foreman start

说了这么多,除非你在Mac上部署,否则它们在本地运行并不重要。 (我在工作之后就注意到了这一点。)只有它适用于您的服务器才有意义。如果你在Heroku上部署,那么Delayed Job工作得很好。

参考:

https://devcenter.heroku.com/articles/delayed-job https://devcenter.heroku.com/articles/procfile http://blog.daviddollar.org/2011/05/06/introducing-foreman.html
https://github.com/ddollar/foreman

答案 1 :(得分:0)

你需要自己动手,因为你没有任何工人可以单独触发你的行为。