最近工做須要用到定時任務。原來寫java的時候也用到過相似的Scheduler的功能。java
Ruby語言中也有一樣功能的工具。rufus-scheduler。下面介紹一下rufus-scheduler。工具
定義: a Ruby gem for scheduling pieces of code (jobs). It understands running a job AT a certain time, IN a certain time, EVERY x time or simply via a CRON statement.ui
安裝:gem install rufus-scheduler(gem安裝是前提,再次很少言)spa
使用:rufus-scheduler能夠指定在特定時間時執行,在今後刻開始間隔多長時間執行,在特定時間間隔內循執行,在特定的cron時間執行。例子以下:code
1:指定特定時間(或者超過指定時間)執行 blog
1 require 'rufus-scheduler' 2 scheduler = Rufus::Scheduler.new 3 4 puts Time.new 5 puts 'process begin----' 6 scheduler.at '2013-10-25 08:39:36 -0700' do 7 puts Time.new 8 puts 'Time is up' 9 puts 'order pizza' 10 end 11 scheduler.join
輸出結果:事件
1 2013-10-25 08:38:09 -0700 2 process begin---- 3 2013-10-25 08:39:36 -0700 4 Time is up 5 order pizza
若是設置的at時間在程序運行以前,好比設置的at時間爲:2013-10-25 08:39:36。程序運行時的時間爲2013-10-25 08:34:36。那麼程序運行時候就執行設置的事件class
舉個例子:require
1 require 'rufus-scheduler' 2 scheduler = Rufus::Scheduler.new 3 4 puts Time.new 5 puts 'process begin----' 6 scheduler.at '2013-10-25 08:39:36 -0700' do 7 puts Time.new 8 puts 'Time is up' 9 puts 'order pizza' 10 end 11 scheduler.join
輸出結果:定時任務
1 2013-10-25 08:45:53 -0700 2 process begin---- 3 2013-10-25 08:45:53 -0700 4 Time is up 5 order pizza
2:在今後刻開始間隔多長時間執行
1 require 'rufus-scheduler' 2 scheduler = Rufus::Scheduler.new 3 4 puts Time.new 5 scheduler.in '1s' do 6 puts Time.new 7 puts 'Hello...Word' 8 end 9 scheduler.join
輸出結果:
1 2013-10-25 02:56:02 -0700 2 2013-10-25 02:56:03 -0700 3 Hello... Word
3:在特定時間間隔內執行
1 require 'rufus-scheduler' 2 scheduler = Rufus::Scheduler.new 3 4 puts Time.new 5 scheduler.every '1s' do 6 puts Time.new 7 puts 'Hello... Word' 8 end 9 scheduler.join
輸出結果:
1 2013-10-25 03:05:38 -0700 2 2013-10-25 03:05:39 -0700 3 Hello... Word 4 2013-10-25 03:05:41 -0700 5 Hello... Word 6 2013-10-25 03:05:42 -0700 7 Hello... Word 8 2013-10-25 03:05:43 -0700 9 Hello... Word 10 2013-10-25 03:05:44 -0700 11 Hello... Word
4:在特定的cron時間執行
1 require 'rufus-scheduler' 2 scheduler = Rufus::Scheduler.new 3 4 puts Time.new 5 puts 'process begin----' 6 scheduler.cron '/1 * * * *' do 7 puts Time.new 8 puts 'Hello word' 9 end 10 scheduler.join
輸出結果:
1 2013-10-25 08:57:46 -0700 2 process begin---- 3 2013-10-25 08:58:00 -0700 4 Hello word 5 2013-10-25 08:59:00 -0700 6 Hello word 7 2013-10-25 09:00:00 -0700 8 Hello word 9 2013-10-25 09:01:00 -0700 10 Hello word 11 2013-10-25 09:02:00 -0700 12 Hello word 13 2013-10-25 09:03:00 -0700 14 Hello word
至於cron的使用方法,請參考cron相關文章。
此文只是Ruby定時任務的初步,在下一篇中和你們一塊兒進入深一步的分析。