Ruby 学习:whenever

ruby 生态里的一个好用的定时任务库
更新于: 2023-01-30 15:42:11

安装

首先你得安装 ruby 环境,推荐 rbenv 方式安装。

# 利用 gem 安装
gem install whenever

# 或者添加到 Gemfile
gem 'whenever', require: false

基本命令

  • 清除
  • 初始化
  • 列出当前目录(项目)下的任务
  • 列出 crontab 里的任务
  • 更新定时任务
alias when-clear='whenever -c'
alias when-init='wheneverize .'
alias when-list='whenever'
alias when-list-all='crontab -l'
alias when-update='whenever --update-crontab'

日志,及常用配置

假设文件在这个位置: ./config/schedule.rb

# Example:
APP_PATH = File.expand_path("../../", __FILE__)
LOG_DIR = "#{APP_PATH}/logs"

every 1.day do
  command "cd #{APP_PATH} && npm run start"
end
# template2
PROJECT_PATH = File.expand_path("..", __dir__)
set :output, "#{PROJECT_PATH}/logs/schedule.log"

every 5.minutes do
  command "cd #{PROJECT_PATH} && npm run restart"
end

常用的操作

功能代码
每小时执行
every 1.day do
  command "cd #{APP_PATH} && npm run start", :output => { standard: "#{LOG_DIR}/cron.log" }
end
不同的时间段
every 1.day, at: ["10:00 am", "2:00 pm"] do
  command "cd #{APP_PATH} && npm run app"
end

参考