Heroku

Herokuでスケジューラ(cron)を設定する方法【Heroku Scheduler】

Herokuには「Heroku Scheduler」というスケジューラ(cron)機能があります。今回はこの機能を使って、Heroku上にデプロイしているRailsアプリケーションにスケジューラを設定してみました。基本的には、Heroku公式サイトの手順どおりに進めれば簡単に設定できます。

アドオンをインストールする

Heroku Schedulerを使うためには、スケジューラのアドオンをインストールする必要があります。以下コマンドで、アドオンをインストールします。

アドオン自体は無料なのですが、アドオンをインストールするためにはクレジットカードの登録が必要です。クレジットカードの登録をしていない場合、以下のエラーが出ます。

タスクを定義する

スケジューラで実行するタスクを定義します。lib/tasks/scheduler.rakeを作成し、その中にタスクを定義します。今回は、Userテーブルのレコードを全削除するタスクを作成します。タスク名は、delete_all_user_tableとしました。

scheduler.rake

タスクを定義したあとは、ローカル環境でタスクの動作確認を行っておきましょう。delete_all_user_tableの箇所は定義したタスク名と置き換えてください。

動作確認まで完了すれば、忘れずHerokuにアプリケーションをデプロイしておきましょう。

Heroku上でタスクの動作確認を行う

以下コマンドで、Heroku上でタスクの動作確認を行います。ここでも、delete_all_user_tableの箇所は定義したタスク名と置き換えてください。

スケジューラを設定する

定義したタスクをスケジューラに登録します。以下コマンドで、Herokuのスケジューラの画面を開きます。


「Add new job」を選択します。


ローカル環境でタスクの動作確認を行ったコマンドを入力し、スケジューラの設定を行います。今回は、毎日3時にタスクを実行する設定にしました。時刻のタイムゾーンはUTC形式(日本と9時間時差がある)なので注意です。


ここまでくれば設定は完了です。お疲れさまでしたー。

ログを確認する

以下コマンドで、スケジューラでタスクが実行されたことを確認します。きちんと実行されていますね。

まとめ

Herokuでスケジューラ(cron)を設定する方法でした。Heroku Schedulerを使うと簡単に設定できるのでおすすめです。

参考リンク

-Heroku

© 2024 Reasonable Code