使用 whenever 建立週期性任務
設定 Gemfile
# Gemfile
gem 'whenever', require: false # 排程工具
專案目錄下 console 執行
wheneverize
產生 config/schedule.rb
文件
設定週期性任務
設定 config/schedule.rb
# 設定Log輸出位置名稱及路徑
set :output, "log/whenever.log"
env :PATH, ENV['PATH']
## 設定執行的環境
## 如果沒有設定則是預設 production
## set :environment, :development
## 補充 後來找到新的地方設定環境 則不需要此設定
# 每30分鐘執行一次
every 30.minutes do
rake "draw_schedule_slots"
end
# 每天凌晨一點執行一次
every 1.day, at: '1:00 am' do
rake "draw_schedule_slots"
end
rake 執行任務的方法 TODO 待補
設定config/deploy.rb
set :whenever_command_environment_variables, -> { fetch(:default_env).merge!(rails_env: fetch(:whenever_environment)) }
Capistrano 自動化佈署自動執行排程工具
設定 Config
require 'whenever/capistrano' # 排程工具
第一次運行測試的指令
# 將 schedule.rb 中的任務更新至 crontab
whenever -i
# 執行 crontab 中的任務
whenever -w
#列出執行的任務
crontab -l