2011-01-26 66 views
1

我想在兩個數據庫之間的每天凌晨3點運行一個同步ruby腳本(如果可能的話,在rails動作中)。將這些時間存儲在數據庫中會很好,因爲如果同步化失敗,我想將它設置爲在一個小時內再次嘗試它(並且在數據庫中,如果我在5AM上可以輕鬆地將其更改爲每天'd想要,甚至其他管理員管理我的應用程序)。我想在我的Rails應用程序中的某個操作中使用腳本,因此我可以在管理中創建一個頁面,只需單擊該腳本將運行的鏈接(不是必需的,它可以位於單獨的Ruby文件中,最終調用它,但將它作爲專用控制器中的動作會更好,因爲我將擁有許多像這樣的腳本,我只是喜歡在一個地方有類似的東西)。這種方式有可能沒有東西 - 我不知道什麼 - 關於 - 但還是像cron?每天<我一天自動執行一個腳本>

回答

7

如果你不想直接與cron來處理,看看whenever。它爲編寫cron作業提供了一個很好的語法:

every :hour do 
    runner "MyModel.do_something" 
end 
+0

哦,這看起來完全像我想做的那樣!謝謝。 – Kreeki 2011-01-26 10:37:06

3

您將使用任務計劃程序來執行此操作。

在Windows上,標準調度程序被稱爲Task Scheduler

在Linux上,標準調度程序被稱爲cron

兩者都非常簡單易用。如果您正在編寫Ruby代碼,則可以安排一項任務。

例如,調度命令與cron,類型crontab -e跑每一天的每一個小時,加入這一行:

0 3 * * * /command/to/run 

有它運行每隔一小時,讓你可以把它檢查一個數據庫,看它是否應該做的事情:

0 * * * * /command/to/run