Railsの定期バッチ実行
Linuxで定期的にバッチ処理を行うにはcrontabを設定すると思います。
railsにはcronに登録するために”whenever”というgemがあるようです。
使い方を忘れないようにメモっておきます。
まずは以下のコマンドでcron設定のためのスケジュールファイルを作成します。
./bin/bundle exec wheneverize .
【実行結果】
[add] writing `./config/schedule.rb'
[done] wheneverized!
次に作成されたschedule.rbを編集します。
config/schedule.rb
# 実行環境
set :environment, :development
# ログ出力
set :output, { :error => 'log/whenever.log', :standard => 'log/cron.log' }
# 15分間隔
every 15.minutes do
runner "Tasks::クラス名.execute"
end
上記は開発環境で15分ごとに指定のタスクを実行するように設定しています。
次に以下のコマンドで実際にcrontabに設定を行います。
./bin/bundle exec whenever --update-crontab RAILS_ENV=development
【実行結果】
[write] crontab file updated
crontabコマンドで確認してみてください、スケジューリングされているはずです。