litaの開発環境構築と開発環境トラブルの対処


litaとは

Lita: ChatOps for Ruby

  • Rubyでチャットボットを開発するためのGem
  • Gemとして公開されているプラグインで拡張できる
  • プラグインやアプリのジェネレータ付き
  • 接続先サービスはプラグインを入れる事でslackやTwitter等が選べる。自分で書くこともできる。
    • lineは今のところ公開されているgemには見当たらない

開発環境構築

基本的にはどのOSでもlita開発チームが用意している開発環境構築用のリポジトリを使うのが簡単。vagrantにCoreOSを乗せて、そこにDockerでredisとRubyを乗せている。

  • VirtualBoxを入れる
  • vagrantを入れる
git clone https://github.com/litaio/development-environment.git
cd development-environment
vagrant up; vagrant ssh
### ここからVM内
lita-dev
### ここからコンテナ内
lita new app_name # アプリの雛形生成
cd app_name
bundle install
lita # デフォルトのshellアダプターでボットが起動される

# @lita infoを実行してみてバージョン情報が表示されればOK
Type "exit" or "quit" to end the session.
Lita > @lita info
@lita info
Lita 4.7.0 - https://www.lita.io/
Redis 3.0.7 - Memory used: 797.04K

起動できるのを確認できたらボットを置きたいサービスにつなぐためのGemをgemファイルに入れたり、Handler(ユーザの発言等に対する動作を定義する)として好きなロジックを実装して開発を進められる。

一番安直な解決作

  • lita-devを叩いてもコンテナの起動が終わらない
  • ホストのファイルが見えない

等の問題はそれなりにネット回線が太い場所にいるならvagrant destroy; vagrant upしてVMとコンテナを再構築すれば済む。VMやコンテナに何かgem以外の物を入れているので消したくない等の場合は以下。

lita-devを叩いても延々待たされる

The development environment is still starting up. Please wait.....

これが延々続く場合がある。

core@lita-dev ~ $ systemctl | grep lita
● lita-dev.service                                                                         loaded failed failed    Lita development environment

systemctlコマンドを叩いてlita-devが死んでいたらこれが原因。

# vagrant ssh したcoreosの中で
sudo systemctl restart lita-dev.service
lita-dev
core@lita-dev ~ $ systemctl | grep lita
lita-dev.service                                                                         loaded active running   Lita development environment

こうなればOK

ホストのファイルが見えない

一旦VMを落としてから再度立ち上げるとworkspace以下のファイルが見えない場合がある。docker psでlita-devコンテナのIDを確認してdocker restart コンテナIDでコンテナを再起動してやると見えるようになった。