我的應用程序使用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