ROR - whenever 執行週期性任務

使用 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