0

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

RAILS_ENV=production script/delayed_job start

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

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

这是我在 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

PS我不确定这与独立乘客有什么关系,因为我必须使用不同版本的导轨,所以我必须使用端口 3002 的独立乘客。

4

1 回答 1

0

我想我已经找到了解决方案。

通读此https://github.com/collectiveidea/delayed_job/wiki/Common-problems#wiki-jobs_are_silently_removed_from_the_database

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

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

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

于 2013-01-30T08:39:52.957 回答