調べたところ、herokuの無料dynoの仕様が以前と変わっており、以下の2点の制限が課せられるようになっていました。
- アクセスが30分間無い場合はスリープする
- 1日のうち、6時間はスリープしなければならない
ということなので、hubotをheroku上で無料で運用させるためには、30分以内に定期的にdynoへアクセスし、hubotをスリープさせずに動かし続ける仕組みが必要でした。
hubot-heroku-keepaliveをつかったdynoの定期アクセス
この上記の問題を解決するために、hubot-heroku-keepalive(https://github.com/hubot-scripts/hubot-heroku-keepalive)
というパッケージが公開されているので、これをhubotのプロジェクトに導入していきます。
hubot-heroku-keepaliveを導入する事で、指定した時刻にスリープ、起動させることができ、さらには指定した間隔でhubotに対してpingを送ることができます。
hubot-heroku-keepaliveの導入方法
導入方法はものすごく簡単です。
パッケージをインストールし、external-script.jsonへパッケージ名を追記します。
ソースの修正はこれだけで、あとはherokuのconfigにスリープ、起動時間、インターバルを設定していきます。
00:00にスリープし、06:00に起動させ、5分おきにpingを送る場合は以下の設定でいけます
設定後、ログを確認するとちゃんと5分おきにpingを送っているのを確認できたので、これで完了です。