残念ながら、Heroku の料金プラン変更 により、Free Plan のままでは Bot を動かし続けることができなくなりました。Sleep しないように、自分自身を起こし続ける hubot-heroku-keepalive(https://github.com/hubot-scripts/hubot-heroku-keepalive) も、早速今回の変更に対応したようなので、設定してみましょう。
hubot-heroku-keepalive の設定
Free Plan に対応するため、2つの環境変数が追加になっています。
- HUBOT_HEROKU_WAKEUP_TIME
- HUBOT_HEROKU_SLEEP_TIME
この設定により、HUBOT_HEROKU_WAKEUP_TIME
〜 HUBOT_HEROKU_SLEEP_TIME
の間だけ Keep Alive の仕組みが動作することになります。
また、30分何もしていないと Sleep してしまうので、HUBOT_HEROKU_KEEPALIVE_INTERVAL
を 30分より短くする必要があります。デフォルトが 5分なので、特に問題はないでしょう。
しかし、これだけでは永続的に Hubot を動かすことはできません。hubot-heroku-keepalive には、Sleep した Dyno を起こす方法を持っていません。
今回は、Heroku の Add-on である Process Scheduler を利用します。
Process Scheduler の設定
heroku コマンドでインストール 〜 設定画面を開くところまで行います。
$ heroku addons:create process-scheduler
Creating process-scheduler-hogehoge... done, (free)
Adding process-scheduler-hogehoge to your-app... done
Setting PROCESS_SCHEDULER_URL and restarting your-app... done, v43
Use `heroku addons:docs process-scheduler` to view documentation.
$ heroku addons:open process-scheduler
Opening process-scheduler (process-scheduler-hogehoge) for your-app... done
まず、Heroku の API Key を要求されるので、Manage Account で API Key を取得しておきましょう。
注意ポイントは Time Zone の設定です。この設定と Heroku の Time Zone が一致している必要があります。日本時間の場合は、Add-on の設定は、(GMT + 9:00) Tokyo を指定し、Heroku は環境変数に、
- TZ=Asia/Tokyo
と設定しておきましょう。
後は、hubot-heroku-keepalive で設定した時間と Process Scheduler の時間に同じものを設定すれば完了です。