Rails在关闭会话后延迟了工作失败

时间:2013-01-30 03:59:27

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

我使用延迟作业gem来处理我的电子邮件递送。它在开发中运行良好,我对它非常满意。但是在我部署到服务器之后,当我使用命令时:

RAILS_ENV=production script/delayed_job start

它会起作用。我已经检查了日志文件和数据库,一切都很好,我可以像我预期的那样收到邮件。但是,当我退出服务器时,什么都不会发生。

我已经使用sequel pro检查了我的数据库,发现延迟作业在数据库中创建了一行,在run_at列中的时间之后,该行将消失,但是没有收到邮件< / strong>即可。当我再次登录时,延迟的作业进程仍然在运行,日志并不奇怪,但我只是无法收到并发送电子邮件。我无法一直保持自我登录。没有延迟的工作,我可以使用传统的方式,它工作正常但速度慢。 我退出服务器后为什么延迟作业失败?

这是我在config / initializers / delay_job.rb中的延迟作业设置

require "bcrypt"

Delayed::Worker.max_attempts = 5
Delayed::Worker.delay_jobs = !Rails.env.test?
Delayed::Worker.destroy_failed_jobs = false

P.S。我不确定是否与独立乘客有任何关系,因为我必须使用不同版本的导轨,所以我必须使用带有端口3002的独立乘客。

1 个答案:

答案 0 :(得分:0)

我想我找到了解决方案。

阅读完https://github.com/collectiveidea/delayed_job/wiki/Common-problems#wiki-jobs_are_silently_removed_from_the_database

我很快意识到我可能会错过配置文件中的“require bcrypt”。

我使用RVM并拥有许多gemsets,但这个特殊的gemset只有gem bcrypt-ruby。在我退出系统后,延迟的作业可能会使用全局或默认的gemset,因此我在所有gemsets中安装bcrypt-ruby并重新启动独立乘客,它可以工作!。

但是,我真的不知道bcrypt和延迟工作之间的联系。