我的应用程序使用Collective Idea fork of Delayed Job异步发送电子邮件。问题是,这在开发环境中可以正常工作,但在生产环境中可以正常工作。工作没有失败(我检查了delayed_jobs
表),他们只是没有被消耗。生产日志中没有任何记录。延迟作业正在开发中,但尚未生产
这是handler
列delayed_jobs
表中的内容:
--- !ruby/struct:Delayed::PerformableMethod \
object: CLASS:FeedbackMailer\
method: :deliver_message\
args: \
- AR:Message:6\
—我看不到什么不对劲的地方。这是我的FeedbackMailer
类:
class FeedbackMailer < ActionMailer::Base
def message(message, sent_at = Time.now)
subject = 'New Feedback Message'
subject = "#{subject}: #{message.subject}" if message.subject.present?
subject subject
recipients '[email protected]'
from '[email protected]'
sent_on sent_at
body :message => message
end
end
最后,这是我Message
类中的相关方法:
def send_email
FeedbackMailer.send_later(:deliver_message, self)
end
我知道的ActionMailer代码正常生产,因为我之前同步测试它切换到延迟作业。正如我所说,我也一直在成功使用Delayed Job进行开发中运行它。
如果我在服务器上运行top
命令,那么我可以看到延迟作业Ruby进程每隔五秒就会启动一次。我怎样才能调试呢?
使用以下命令启动延迟作业:RAILS_ENV =生产脚本/ delayed_job start – Sooraj 2011-09-18 14:06:24