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を使うと簡単に設定できるのでおすすめです。