###■環境
・Windows10(64bit)
・Ruby 2.7.4
・Rails 5.2.6
・clockwork 2.0.4
・本番環境 Heroku
###■Railsでのタスク定期実行方法(開発環境)
####状況
Railsアプリケーション上でタスクを定期実行したい。
そして、Windows環境ではgem「whenever」は使用できないため、gem「clockwork」をインストールし目的を達成する。
####作業内容
1)gem「clockwork」をインストール
gem 'clockwork'
bundle install
2)タスクファイルを作成
「config\clock.rb」のように、任意の階層・ファイルを作成する。
3)タスクファイルの内容を記載
require 'clockwork'
require File.expand_path('../boot', __FILE__)
require File.expand_path('../environment', __FILE__)
module Clockwork
handler do |job|
# 実行したい処理を記載
end
# 実行したいタイミングを指定。以下ならば、毎日・00:15(24時間表記)が来たときにのみ実行。
every(1.day, 'midnight.job', :at => '00:15')
end
4)タスクを実行
# 4-1)該当アプリケーションの階層に移動
cd 【該当アプリケーションのルートディレクトリパス】
# 4-2)clockworkコマンドを実行
clockwork config/clock.rb
frequent.job・less.frequent.job・hourly.jobの場合は以下の挙動になる。
コマンド実行→直後にタスクを実行→待機→指定したタイミングでタスクを自動実行→待機(以降繰り返し)
midnight.jobの場合は以下の挙動になる。
コマンド実行→待機→指定したタイミングでタスクを自動実行→待機(以降繰り返し)
###■Railsでのタスク定期実行方法(本番環境)
####状況
本番環境としてHerokuを利用するが、Herokuにはプロセスの合計稼働時間で課金される・アプリケーションが毎日自動再起動されるなどの仕様がある。
そのため、アドオン「Heroku Scheduler」を使用するとよい。
####作業内容
以下を参考に設定