Ruby on Rails延迟工作本地不会运行

我正在处理活动记录gem的延迟工作https://github.com/collectiveidea/delayed_job我正在尝试设置一个工作,在我的应用程序中发生事件后运行五分钟。 五分钟过后,我需要进行一些数据库更新。 我尝试过rake jobs:work和RAILS_ENV =开发脚本/ delayed_job启动。 在此之前,我已经运行了bundle install,rails generate delayed_job:active_record和rake db:migrate。 我有一个彩票网站,需要每五分钟检查一次获胜者,并为获胜的玩家更新令牌。

我等了五分钟,但我的本地应用程序没有更新。

这是我到目前为止所拥有的:

gem文件:

gem 'delayed_job_active_record' gem "daemons" 

工作(位于lib)

 class WinnersJob < Struct.new(:blast_id) def perform ... end 

调节器

  require 'winners' Delayed::Job.enqueue(WinnersJob.new(blast.id), 1, 5.minutes.from_now) end 

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

来自Heroku文档:

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

 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