Whenever必须使用liunx开发环境,在windows下无法调试及测试。
rufus-scheduler定时任务,使用rails s启动则可以正常启动并执行,使用nginx代理后无法启动任务,原因未知。。。。
github地址:https://github.com/javan/whenever
1,安装
gem 'whenever', :require => false
下载gem,并执行安装gem
执行gem install --local
执行 wheneverize .
2,whenever有四种方式,考虑使用哪一种(之前使用runner,由于粗心 配置不合适,后来换用rake方式)
- rake
- runner
- command
- script
下面先以rake方式进行说明:
在lib/tasks 下新建一个任务,例如:jobs
lib/tasks/jobs.rake
# encoding: utf-8
namespace :[namespace] do
desc "這是一個rake" #此處可自行輸入task的描述
task :[your task name] => :environment do
[your code here]
end
end
end
3,可以进行测试
rake -T #會列出剛新增的rake bundle exec rake [namespace]:[task] #執行rake
4,创建定时任务
编辑config/schedule.rb进行设定
config/schedule.rb
env :PATH, ENV['PATH'] #要用bundle時必須要加
set :output, 'log/cron.log' #設定log的路徑
every 1.day, :at => '1:00 am' do
rake "[剛剛的namespace名稱]:[剛剛的task名稱]"
end
whenever -w 即可添加此任务至corn中
whenever -c 清楚corn任务列表
6,查看corn任务
crontab -l 查看corn任务
crontab -e 修改corn任务
住:一般使用环境都是development 修改corn语句环境
- 若排程沒有正常執行,可以去開啟
config/schedule.rb
中:output
設定的log檔位置,此案例中為log/cron.log
,檢查是否有錯誤訊息。 - 若錯誤訊息為
bundle command not found
請在config/schedule.rb
中加入env :PATH, ENV['PATH']