2013-06-24 47 views
0

無論何時只要安裝了寶石。我看到各種cron和每當關於安排與任務分鐘,小時,天等任務的教程。我觀看了在cron/每當 railscast視頻。 但我還沒有找到任何有關如何寫作業本身的例子,除了耙子任務。如何編寫Rails cron作業每當寶石?

我想安排一個任務來檢查數據庫的變化。這個想法是,數據庫將有標籤,告訴你哪個特定的行已經改變。 每當應定期輪詢數據庫以檢查這些更改。然後希望可以推送,或讓客戶知道它需要使用ajax動態更新頁面。 如果我手動這樣做,我會使用像命令:

rails dbconsole 
select blah from blah; 

是否有每當寫的MySQL命令的方法嗎?這是輪詢數據庫更改的正確/最佳方式嗎? 我知道有很多方法可以從mysql本身查詢數據庫,但是我已經明確告訴我要從rails一側進行。

我是所有這些技術(Rails,數據庫,ajax)的新手,所以這可能是爲什麼我不明白答案。

在客戶端,我有按鈕,使用jquery添加/刪除/更改行數據,只是爲了向我保證,我知道如何改變表中的東西,一旦我可以從數據庫中獲取東西。這些按鈕將最終被刪除。

現在,頁面使用ajax來刷新整個html表格。但他們只想通過ajax刷新/更新。

回答

2

再次看看RailsCast for cron/whenever。你會注意到這樣的代碼行:

runner "MyModel.some_process" 

評估並運行字符串中的代碼。所以,無論你想什麼時候運行,只要自己編寫代碼並且有一個方法來調用它。

因此,也許你創建一個名爲DatabaseWatcher類並將其存儲在lib目錄中,有一個名爲.run一個一流水平的方法,你會做到以下幾點:

runner "DatabaseWatcher.run" 

就是這樣。你的.run方法就是你放置邏輯的地方。至於如何實際編寫代碼,這取決於您的要求。您是否在尋找updated_at時間是否在1分鐘之內?你上次檢查數據庫時是否存儲時間,然後你可以看到updated_at時間是否大於?每次模型更換時,您是否都有一張桌子?這一切都取決於你。

+0

謝謝!這正是我需要的那種解釋! – Arwen17

+0

不客氣!請務必將答案標記爲已接受,以便未來的訪問者知道這適用於您! – MrDanA