加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby on Rails延迟工作本地不会运行

发布时间:2020-12-17 03:54:36 所属栏目:百科 来源:网络整理
导读:我正在处理活动记录宝石 https://github.com/collectiveidea/delayed_job的延迟工作我正试图在我的应用程序中发生事件后五分钟设置一个工作.五分钟过后,我需要进行一些数据库更新.我尝试过rake jobs:work和RAILS_ENV =开发脚本/ delayed_job start.在此之前
我正在处理活动记录宝石 https://github.com/collectiveidea/delayed_job的延迟工作我正试图在我的应用程序中发生事件后五分钟设置一个工作.五分钟过后,我需要进行一些数据库更新.我尝试过rake jobs:work和RAILS_ENV =开发脚本/ delayed_job start.在此之前,我已经运行了bundle install,rails generate delayed_job:active_record和rake db:migrate.我有一个彩票网站,需要每五分钟检查一次获胜者,并为获胜的玩家更新令牌.

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

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

宝石文件:

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 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读