litaとは
- 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
でコンテナを再起動してやると見えるようになった。