【问题标题】:Ruby on Rails Delayed Job Local Wont RunRuby on Rails 延迟作业本地无法运行
【发布时间】:2012-11-05 04:04:07
【问题描述】:

我正在处理活动记录 gem https://github.com/collectiveidea/delayed_job 的延迟作业我正在尝试将作业设置为在我的应用程序中发生事件五分钟后运行。五分钟过去后,我需要进行一些数据库更新。我试过 rake jobs:work 和 RAILS_ENV=development script/delayed_job start。在这之前,我已经运行了 bundle install、rails 生成延迟作业:活动记录和 rake db:迁移。我有一个彩票网站,需要每五分钟检查一次中奖者,并为中奖玩家更新代币。

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

这是我目前所拥有的:

宝石文件:

 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

【问题讨论】:

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


    【解决方案1】:

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

    来自 Heroku 文档:

    然后您需要告诉您的应用程序处理放入您的作业队列中的作业,您可以通过将其添加到您的 Procfile 来做到这一点:

    worker:  bundle exec rake jobs:work
    

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

    foreman start
    

    说了这么多,除非您在 Mac 上进行部署,否则它们是否在本地运行并不重要。 (我在 让它工作后注意到了这一点。)只有当它在您的服务器上工作时才重要。如果您在 Heroku 上进行部署,那么延迟作业效果很好。

    参考:

    https://devcenter.heroku.com/articles/delayed-job
    https://devcenter.heroku.com/articles/procfile

    【讨论】:

    • bundle exec rake jobs:workoff 运行挂起的作业并退出
    猜你喜欢
    • 1970-01-01
    • 2013-05-01
    • 2013-03-05
    • 2017-11-09
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多