Herokuには便利なアドオンがたくさんありまして、その中にHeroku Schedulerっていうのがあります。
Heroku Schedulerは一定時間(10分、1時間、24時間から選択できます)おきに指定した処理を自動でやってくるれるサービスです。たとえばいろんなブログのRSSを取得して1時間おきに自動で更新したい時などに使えますね。
現在Railsで作ってるwebサービスがありまして、このHeroku schedulerを使おうと思って調べていたんですけど、どのサイトも結構適当に書かれててうまく動かせなかったんですね。
結局英語で書かれてる公式ドキュメントを読んだらすぐに解決しました笑
なので今日はHeroku Schedulerの使い方を紹介したいと思います
※Ruby on railsでherokuを利用する場合の方法です。他の言語だとやり方が少し違うらしいのでご注意を!
Herokuへの登録やデプロイのやり方などはわかっている前提で話を勧めます。
1、まずHeroku Schedulerをインストールするために以下のコマンドを入力
$ heroku addons:create scheduler:standard
これでインストールは完了です。
2、次に開発しているアプリケーションのlib/tasksフォルダ内にscheduler.rakeというファイルを作ります。そして今作ったschedular.rake以下の内容を記述
desc "This task is called by the Heroku scheduler add-on" task :action_one => :environment do #ここにしたい処理を記述 endtask :action_two => :environment do #ここにしたい処理を記述 end
action_one、action_twoなどの文字は任意です。
やりたい処理がひとつだけならaction_oneだけで十分です。必要に応じてaction_two,action_threeと増やしてください
ローカル環境で処理を確認したい場合はターミナル上で
$ rake action_one
と打てば動いてくれます。
3,schedular.rakeをHeroku上にデプロイします
4、Heroku Schedulerの管理画面を開いて、$のあとの空欄にrake action_oneと書いて、あとは10分おきか1時間おきか24時間おきかを指定してあげれば完了です。
Heroku上で処理を確認したい場合は
$ heroku run rake action_one
と入力すると確かめることが出来ます。
以上、わかってしまえば何ら難しい話ではないのですが自分はかなり手こずりました。
rakeファイルの名前をそのまま実行てしみたり、Schedulerの設定でheroku runと入れてしまったりと。。。。
初めから公式ドキュメント読んでればよかったんですけど英語嫌いで避けていたのが仇となってしまいました笑
以上、参考にしていただければ幸いです!