ローファイ日記

出てくるコード片、ぼくが書いたものは断りがない場合 MIT License としています http://udzura.mit-license.org/

Hubot + Dokku + IRC でボット運用

標記の組み合わせでボット作るのが神がかって楽になった。

Dokkuの立て方は http://qiita.com/udzura/items/8b7ffaa1c0ec9994e7ef に書いた。

Dokku、サーバをデプロイする際には、たとえば dokku.pepabo.com に立てた場合 *.dokku.pepabo.comdokku.pepabo.com のCNAMEにしないといけないみたいな縛りがあるので若干面倒だが(xip.io使う手もあるけど)、Webサーバ機能を使わないならHubotをデプロイする際は関係ないので比較的楽である。

Hubotは

$ hubot -c foobot

とかジェネレータで作れば最初からProcfileとかがついてくるので、そのままプッシュすれば動く。

hubot-irc は結構パラメータが多いので、 bin/hubot-irc.sh みたいな実行スクリプトを作ってそこに環境変数を羅列し、Procfileを

web: sh bin/hubot-irc.sh -a irc

みたいにすれば良い。

あと、ホントはDokkuの監視とかすると良いと思うんだけどそこまではやれていない...。

Hubotどうするとか詳細は気が向いたら書く。

追記

ご指摘の通り永続化の仕組みはガン無視である。何か記憶する場合もオンメモリのみ。

Dokkuの弱点として永続化層を考えだすとめっちゃダルくなると言うのがあるのでイミュータブルなボットにすると良いと思う。データ類もリポジトリに入れとくとか。

mysql-plugin、動かないし。。

supervisordで運用していた時の記憶のせいで、便利さを盛りすぎたというのはある。

追記ツー

書いた。ということでHubotに関してはBrain含め全機能が使えるのでは、と思う。