Railsでcronするメモ

2023/06/25 追記

Sidekiq 版書きました。

🚌Arrow icon of a page linkRails に Sidekiq を導入する

Railsで定期実行処理を書きたい時のためのメモ。cron を応用してくれる whenever を導入して設定する。

Gemfileに追記

gem "whenever"

インストール&設定ファイル生成

$ bundle install $ bundle exec wheneverize

設定ファイルで定期実行処理を書く

対象のTaskはすでに存在する前提

set :output, 'log/crontab.log' ENV.each { |k, v| env(k, v) } rails_env = ENV['RAILS_ENV'] || :development set :environment, :rails_env every '0 15 * * *' do rake 'carepi:leaveall' end
config/schedule.rb

every '0 15 * * *' でUTC時間15:00(= JST 0:00)に毎日実行になる。これはRailsが載ってるDockerコンテナさんがUTCで動いているためこうした。Docker側で設定すればいいが面倒。

参考