安裝
gem 'whenever', :require => false
其中":require => false"的變數是為了不讓這個gem被專案require,因為其實他本身並不會被專案所呼叫,那也就沒有必要被載入專案,佔用記憶體。
原理:
linux中本身就有排程的功能(參見鳥哥的linux私房菜),whenever只是以更親切的方式來提供開發者使用,但實際上還是由os來執行cronjob。
初始化
在專案底主目錄下:wheneverize .
這樣會產生config/schedule.rb,我們需要在裡面設定隔多久執行特定的job。設定cronjob
上一個步驟中產生的schedule.rb中其實已經有一些範例可以做參考,基本上格式就是:
every 1.day, :at => '4:30 am' do
runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
end
以上述程式碼來說,要執行的method就寫在my_model.rb中,這樣應該是足夠明瞭了。
最後一步
但可不是這樣就搞定了,因為對os來說,crontab中仍然沒有任何排程工作。可以用以下指令來檢視:crontab -l
所以我們要先執行whenever的一段指令讓我們寫在schedule.rb的排程工作實際加到crontab中才行:whenever --update-crontab store
這時我們再執行 crontab -l 就可以看到剛剛加入的行程了。