rails中實現(xiàn)定時任務的之whenever

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了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容