Whenever利用的是crontab,所以系統(tǒng)要支持crontab才可以使用它,它有清析的語法,可以和部署工具進行整合。
一、創(chuàng)建項目:rails new whenever_test --skip-bundle
進入項目文件夾: cdwhenever_test
打開Gemfile文件:vim Gemfile
把source 'https://rubygems.org'改為source 'https://ruby.taobao.org'。
在文件里加入:
gem 'whenever', :require => false
group :development do
gem 'mina'
end
然后運行:bundle install
二、使用whenever
運行命令:wheneverize.
這時它會生成一個config/schedule.rb文件,用vim打開該文件會有如下圖的內(nèi)容:

在這個schedule.rb文件里添加一個定時任務:
every :day, :at => '0:05am' do
runner "Order.update_status"
end
意思是每天在0:05執(zhí)行,用來更新訂單的狀態(tài)。(代碼自己定義,這里不再一一介紹。whenever語法請參考: https://github.com/javan/whenever)
運行命令:whenever
這個命令是查看當前schedule.rb文件里寫的定時任務,包含未同步到crontab file的任務,以crontab的格式顯示。
接下運行命令:whenever -i 或 whenever --update-crontab? 把schedule.rb文件里的任務同步到crontab file。
用命令crontab -l 查看守護進程里可以執(zhí)行的任務。
三、mina整合
把whenever整合進mina,關(guān)于mina的使用這里不再做介紹。直接進入整合說明。
在config/deploy.rb文件里頂部加入? require 'mina/whenever'
在部署任務里加入:
task :deploy => :environment do
deploy do
to :launch do
invoke :'whenever:update'
end
end
end
這樣在用mina deploy 部署的時候可以更新服務器的crontab file了。