【问题标题】:delayed_job works only with rake jobs:workoff, not with RAILS_ENV=production bin/delayed_job startdelay_job 仅适用于 rake 作业:workoff,不适用于 RAILS_ENV=production bin/delayed_job start
【发布时间】:2014-08-10 22:47:36
【问题描述】:

我有一个非常简单的任务 - 我需要检查 submission 在创建后 2 分钟内是否已分配给开发人员。如果没有,请发送电子邮件通知。

用 Rails4 编写的应用程序。我决定使用delayed_job gem。

after_create :unassigned_submission_pending_notification
def unassigned_submission_pending_notification 
  NotificationMailer.unassigned_submissions_pending(self).deliver if developer_id.nil?
end
  handle_asynchronously :unassigned_submission_pending_notification, run_at: Proc.new { 2.minutes.from_now }

documentation 中,据说运行RAILS_ENV=production bin/delayed_job start 是为了让工人完成他的工作。但在我的情况下,这个命令什么都不做,只有当我运行 rake jobs:workoff 时它才有效。

有什么想法吗?

谢谢!

【问题讨论】:

    标签: ruby-on-rails delayed-job


    【解决方案1】:

    你可以这样试试:

    RAILS_ENV=production bundle exec bin/delayed_job start
    

    或者这个:

    rake jobs:work
    

    【讨论】:

    • 不幸的是,也不能正常工作。试过了。仍然只有 rake 工作:workoff 触发要发送的通知
    • 任何,显然这使它工作:)。那么我应该使用这个命令而不是文档中提到的吗?
    • 基本上我认为bin/delayed_job start应该以rake jobs:work开头。我没有使用rake jobs:work,但我直接从使用Capistrano 的部署方法调用bin/delayed_job start。也许 Capistrano 隐含地开始 rake jobs:work。我已经通过添加对您有用的内容来更新答案。如果没问题,你可以检查答案。 :-)
    • 是的,它可以解决问题,谢谢 :) 检查了答案,但不能投票 - 没有声誉(
    • 主要是你的问题已经解决了,社区知道哪个答案是好的。一切都很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2014-05-11
    • 1970-01-01
    • 2012-05-13
    • 2021-01-20
    • 2019-10-10
    相关资源
    最近更新 更多