Ruby 学习:whenever

ruby 生态里的一个好用的定时任务库
更新于: 2024-11-10 14:12:31

安装

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

# 利用 gem 安装
gem install whenever

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

# 指定安装源
gem install whenever --source 'https://rubygems.org'

基本命令

  • 清除
  • 初始化
  • 列出当前目录(项目)下的任务
  • 列出 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
每2小时备份
PROJECT_PATH = "#{ENV["HOME"]}/github/macos-backup"
set :output, "#{PROJECT_PATH}/logs/schedule.log"

every 2.hours do
  command "#{PROJECT_PATH}/bin/auto-backup.sh"
end