我有一個rails應用程序,我希望在一天的特定時間使用delayed_jobs gem在後臺進程中發送文本/電子郵件。這是我有我的應用程序的相關部分設置現在:延遲作業總是立即執行
class SomeClass
after_create :send_reminder
def when_to_run
self.date_time - 1.hour
end
def send_reminder
MessageHandler.new().send_message
end
handle_asynchronously :send_reminder, run_at: Proc.new { |i| i.when_to_run }, queue: "Messages"
end
MessageHandler的類是一個單獨的類我定義這實際上容納用於發送短信(含Twilio)和電子郵件的方式(用Mailgun)。
開始的delayed_job(BIN/delayed_job的開始),並創建SomeClass的實例後,delayed_job的日誌內容如下:
Job SomeClass#send_reminder_without_delay (id=686) RUNNING
我不知道爲什麼它正在運行send_reminder_without_delay,和它做它的每一個時間。我試過在send_reminder
方法中使用MessageHandler.new().delay.send_message
而不是MessageHandler.new().send_message
,但是這在我的任何地方都沒有得到。
我已經搜索了高和低的答案,並繼續縮短 - 任何幫助將不勝感激!