我有一个服务器,我使用capistrano部署,我使用delayed_jobs进行一些邮件,但由于某种原因,我的服务器上的作业没有执行。 delayed_job进程正在运行(正在运行bin/delayed_job status
正确地回答我说某个进程有一个进程),但我不知道进程是不是正在执行我的作业,即使我的作业不是入队。在本地它一切正常,但在服务器的生产阶段,它没有。
我想知道我是否有办法至少检查那些工作是什么,因为我无法通过访问控制台来实现它
答案 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)?