LoginSignup
0
0

More than 1 year has passed since last update.

【初心者向け】Railsでのタスク定期実行方法

Posted at

■環境

・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」をインストール

Gemfile
gem 'clockwork'
ターミナル
bundle install

2)タスクファイルを作成
「config\clock.rb」のように、任意の階層・ファイルを作成する。

3)タスクファイルの内容を記載

config\clock.rb
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」を使用するとよい。

作業内容

以下を参考に設定

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0