rakeタスクをcron実行する
cron: 定期的に何かのプログラムを実行するためのLinuxの機能。
既存のrakeタスクをcronで一定間隔で実行するため、gem 'whenever'を用いる。
whenever
インストール
gem 'whenever', require: false
$ bundle install $ bundle exec wheneverize . # config/schedule.rbを作成
schedule.rbの編集
# config/schedule.rb # Rails.rootを使用するために必要 require File.expand_path(File.dirname(__FILE__) + '/environment') # cronを実行する環境変数 rails_env = ENV['RAILS_ENV'] || :development # cronを実行する環境変数をセット set :environment, rails_env # cronのログの吐き出し場所 set :output, "#{Rails.root}/log/cron.log" # タスクとその実行感覚を指定 every :year do rake 'sixth_grade:graduate' rake 'lteq_fifth_grade:grade_up end every :hour do rake '...' end
タスクをcrontabに追加
schedule.rbに記述したタスクがcrontabファイルに追加される。これで完了。
$ whenever --update-crontab
主なcrontabコマンド
crontab -l # 設定されているcronを表示する crontab -e # crontabを編集する crontab -r # 設定されているcronを全削除する