如何在生产中看到delayed_job作业?

时间:2016-06-10 03:15:24

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

我有一个服务器,我使用capistrano部署,我使用delayed_jobs进行一些邮件,但由于某种原因,我的服务器上的作业没有执行。 delayed_job进程正在运行(正在运行bin/delayed_job status正确地回答我说某个进程有一个进程),但我不知道进程是不是正在执行我的作业,即使我的作业不是入队。在本地它一切正常,但在服务器的生产阶段,它没有。

我想知道我是否有办法至少检查那些工作是什么,因为我无法通过访问控制台来实现它

2 个答案:

答案 0 :(得分:1)

延迟工作的另一个宝石是延迟网络,您可以在这里https://github.com/tatey/delayed-web

您将其添加到您的gemfile

gem 'delayed-web'

然后运行

rails generate delayed:web:install

这将在config / initializers下生成具有以下内容的初始化程序文件delay_web.rb:

Rails.application.config.to_prepare do
  Delayed::Web::Job.backend = 'active_record'
end

以及在config / application.rb中,生成器也会为您添加

# config/application.rb
config.assets.enabled = true
config.assets.precompile << 'delayed/web/application.css'

在routes.rb中,它可能还会添加一条路由,但是,如果您使用的是devise,则可能只想限制对管理员用户的访问,如下所示:

authenticated :user, -> user { user.admin? } do
  mount Delayed::Web::Engine, at: '/jobs'
end

答案 1 :(得分:0)

好的,所以我通过数据库本身检查了我的工作,我通过postgres用户输入了psql并在delayed_jobs表中做了一些查询,你也可以尝试RAILS_ENV=production bin/delayed_jobs run(对于rails 4,rails 3使用“ script /“而不是”bin /“),它将显示工作人员在执行作业时正在做什么。

您也可以像上面评论的Swards一样,使用gem为delayed_jobs创建一个Web界面:https://github.com/ejschmitt/delayed_job_web

如果您仍然想知道发送电子邮件的问题是什么,我已经打开了另一个问题,因为它远离了这个问题:What port to use sending email with SMTP (mailgun) in rails app on production server (DigitalOcean)?

相关问题