2013-01-23 50 views
0

我想知道在RoR中是否有辦法在不同時間運行兩次Rake任務或Ruby代碼。例如,當用戶註冊時,在三天後運行任務,然後在一週後運行相同的任務,但沒有更多(「停止進程」)。我正在尋找crontab和Resque,Stalker,Starling等寶石,但我並不清楚這些寶石能夠幫助我。我正在考慮爲每個用戶運行一個守護進程並計算任務執行次數。問題在於守護進程會一直活躍於「吃」資源。有沒有辦法儘可能少使用資源?我想在以後的Heroku中運行它。如何用cron運行rake任務兩次?

+0

守護進程的問題是我必須一直詢問現在什麼時候檢查是否已經過去了一週,3天等。 – Dagosi

回答

1

我通常解決這類在記錄上有日期列的東西(例如first_reminder_sent_at,user_responed_at,week_reminder_sent_at)。在這種情況下,第一個項目的日期,用戶的回覆以及爲期一週的項目。

創建一個cron任務來調用rake任務 - 查看大於3天的所有用戶,< 1周,用戶沒有響應,日期未設置。 排隊後臺作業。 作業將發送郵件(或任何任務),然後在記錄上設置日期字段。

Cron調用rake任務的任務 - 查看所有用戶未滿1周的用戶未響應且日期未設置的用戶。 發送提醒並在後臺作業中設置日期。

0

嘗試每當cron和創建一個rake任務,這是做你的東西..並在數據庫中進行一些觸發字段時,如何rake任務應該做他的行動..

0

Posix系統具有at命令,這是安排作業在稍後運行一次的簡單方法。儘管使用基於應用程序的排隊機制安排後續工作沒有任何問題,如其他答案中所述。 at是主機特定的,因此如果您正在運行羣集,則可能不適合,尤其是如果主機可能是暫時的。