LoginSignup
8
8

More than 5 years have passed since last update.

Herokuで定期的にrakeタスクを実行したい場合は、Heroku Schedulerを使おう

Posted at

定期的にrake タスクを実行したい時、
サーバーに入れるならcronに登録すれば良いと思うのですが、
HerokuではHeroku Schedulerを使う必要があったのでやり方をメモします。

*Heroku Schedulerの実行はベストエフォートのようなので、本番環境で使うにはcustom clock processという方法が推奨されているようです。

1.プロジェクトフォルダーでheroku addons:create scheduler:standardを実行
スケジューラーアドオンが登録されます。

➜  highlights_delivery git:(master) ✗ heroku addons:create scheduler:standard
Creating scheduler:standard on ⬢ hightdeliverer... free
To manage scheduled jobs run:
heroku addons:open scheduler

Created scheduler-asymmetrical-91648
Use heroku addons:docs scheduler to view documentation
➜  highlights_delivery git:(master) ✗ 

2.lib/tasks/scheduler.rakeファイルを作ります。
このファイルに記述されたtaskがHeroku Schedulerの実行対象です。

desc "This task is called by the Heroku scheduler add-on"
task :update_feed => :environment do
  puts "Updating feed..."
  NewsFeed.update
  puts "done."
end

task :send_reminders => :environment do
  User.send_reminders
end

3.コンソールでheroku run rake update_feed でタスクのテストができます。今回自分はvagrant使っていて、herokuコマンドはvagrant側にはインストールしておらず実行できない環境だったので飛ばしました

4.heroku addons:open schedulerkを実行するとブラウザーでタスクの登録画面が開くので設定します。NEXTDUE(次の実行時間)はUTCなので気をつけてください。
スクリーンショット 2019-03-10 16.14.43.png

以上で設定終了です。

スケジュールはHerokuのOverviewから確認できます。
スクリーンショット 2019-03-10 16.33.38.png

本番の実行ログが見たいときには、Herokuのログから
schedulerのIDを調べて、 コンソールでheroku logs --ps scheduler.idコマンドでschedulerの実行ログだけ表示可能です。

Heroku ViewLogs

2019-03-10T07:51:03.733908+00:00 app[scheduler.5299]: /app/bin/bundle:3:in `load'
2019-03-10T07:51:03.733910+00:00 app[scheduler.5299]: /app/bin/bundle:3:in `<main>'
2019-03-10T07:51:03.733911+00:00 app[scheduler.5299]: Tasks: TOP => on_a_daily_basis
2019-03-10T07:51:03.733913+00:00 app[scheduler.5299]: (See full trace by running task with --trace)

➜ app git:(master) heroku logs --ps scheduler.5299

2019-03-10T07:51:03.727169+00:00 app[scheduler.5299]: ICAgIDxwPjU4PC9wPg0KICAgIDxwPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS08
2019-03-10T07:51:03.727170+00:00 app[scheduler.5299]: L3A+DQogICAgPHA+5pel5pys5LyB5qWt44Gr44Gv44CM5L2Z6KOV44GM5qyy
2019-03-10T07:51:03.727172+00:00 app[scheduler.5299]: 44GX44GE44Gq44KT44Gm55SY44GI44Gg44CN44CM44GM44KT44Gw44KM44Gw
2019-03-10T07:51:03.727176+00:00 app[scheduler.5299]: 5L2Z6KOV44KC5L2c44KM44KL44CN44Go44GE44Gj44Gf57K+56We6Ku

8
8
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
8
8