Ruby製HubotクローンのRubotyをSlackで動かす

Deploy を押して、Ruby製HubotクローンのRubotyを動かす方法を説明します。

Slackを設定

まず、利用するSlackのチームでXMPP Gatewayを有効化しましょう。この設定はTeam Ownerが設定画面から有効化する必要があります。その後、Ruboty用のSlackアカウントを作成し、利用するSlackチームに招待しましょう。Slackの提供するHubot Integrationではアカウントをつくる必要はありませんでしたが、3rd Party製のBOTをまともに利用する場合にはアカウントが必要になります。Rubotyを管理しそうな人のGmailアドレスに +ruboty とか付けて登録すると良いんじゃないでしょうか。

Herokuにデプロイ

次に、RubotyをHerokuにデプロイしましょう。Herokuアカウントを持っていれば、記事先頭に載せたデプロイボタンを押せば設定画面に進めます。作成したRuboty用のアカウントの名前と、XMPP Gateway用パスワード (プロフィール画面から自分のXMPP用のパスワードを閲覧できます)、Slackのチーム名をそれぞれ入力すれば、Herokuにデプロイできます。

Dynoを追加

Herokuのデプロイボタンではプロセスを自動的に起動できないので、最後にダッシュボードからDynoを0個から1個に変更します。(ところで最近デフォルトで追加されるDynoがβ版のcedarに変わった影響でOpenSSLのエラーが出る場合があります。その場合は heroku stack:set cedar 等で非β版のcedarに戻した後で再度デプロイしましょう)

Slackで確認

これでデプロイは完了です。Slackの #general チャンネルで @ruboty ping と入力して反応が返ってきたらデプロイ成功です (名前をqiitanにしてたら @qiitan ping です)。1vs1チャットでも試せます。

ping.gif

デバッグ

何か失敗していそうだったらログを見て確認しましょう。Web UIからはログが見られないので、herokuコマンドから確認します。herokuコマンドを入れていない場合はここから入れておきましょう。よくある間違いとして、パスワードやチーム名、ユーザ名を間違えていてエラーを出しているというものがあります。間違っていたらダッシュボードからアプリを削除してやり直すのが楽かもしれません。

heroku logs --app your-app-name

カスタマイズ

初期状態では最低限のプラグインしか含まれていませんが、ruboty-templateをforkすれば自分の好きなプラグインを追加できます。いま住んでるシェアハウス用のSlackでは、ruboty-cronruboty-syoboi_calendarを組み合わせて、毎日21時に今日都内で放送予定のアニメを発言させたりしています。

例

Forkする場合は、Fork後のレポジトリ内で heroku git:remote というコマンドを使うと簡単にpush先を追加できます。変更後の初回のgit-pushでは、恐らく--forceオプションが必要になります。

heroku git:remote --app your-app-name
git push heroku master -f

コラボレーション

Herokuを使っていると、他の開発者が変更を行うたびにデプロイを依頼する必要があって大変です。Travis CIを利用してmasterに変更がpushされたらHerokuにデプロイされるようにし、Pull Requestベースで変更を入れるようにしておくと便利です。

gem install travis
travis init
travis setup heroku
git add .travis.yml
git commit -m "Add .travis.yml"
git push origin master

おわりに :bow:

Ruby製HubotクローンのRubotyをSlackで動かす方法について紹介しました。ボタン1発でデプロイできるHerokuのデプロイボタンは革命的ですね。Herokuは1アカウントあたり100アプリまで作成できるので、1人100体までRubotyを従えることができます。Hubotと比べるとRubotyは酷い出来ですが、いやーでもプラグインとかRubyで書きたいしNodeよく分からんのだよねという人の助けになれば幸いです。

参考