RubotyというHubotのRuby版クローンのチャットBOTがあります。
大学でSlackと連携して使っているのですが、自分でプラグインを作って拡張できるということで、Rubyの勉強ついでに作ってみることにしました。

しかし、開発の前にセットアップでいろいろと躓いたので、正常にセットアップできる手順をここにメモしておこうと思います。Rubyのインストールも含みます。

環境

  • OS: CentOS 6.6
  • Ruby 2.2.0
  • gem 2.4.5
  • rbenv 0.4.0-129-g7e0e85b
  • git 1.7.1
  • bundler 1.7.12
  • ruboty 1.1.4
  • ruboty-gen 1.2.0

OS以外はこれからインストールします。
Windowsだと全然うまく動かなかったのでCentOSにしました。VagrantとVirtualBoxで仮想で動かしています(こっちもいろいろ躓いた)。

必要なパッケージのインストール

rbenvのインストールや、rubyのビルドに必要なパッケージをインストールします。

# yum -y install git
# yum -y install readline-devel openssl-devel zlib-devel libffi-devel

rbenvとruby-buildのインストール

Rubyのインストールに使うrbenvと、rbenvに使うruby-buildをインストールします。

# git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
# git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
# echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
# echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# source ~/.bash_profile

rbenv を利用した Ruby 環境の構築 | Developers.IO

Rubyのインストール

rbenvでバージョンを指定してRubyをインストールします。
2行目では使用するRubyバージョンを指定しています[ref]rbenvではいくつものRubyバージョンを管理することができます[/ref]。
gemもここでインストールされます。

# rbenv install 2.2.0
# rbenv global 2.2.0

ruboty等のインストール

bundlerは、PHPのComposerとか、JavaScriptのbrewとかの、Ruby版です。
ruboty-gen、ruboty-megenはrubotyプラグインのテンプレートを作るためのツールです。

# gem install bundler
# gem install ruboty ruboty-gen ruboty-megen

動作テスト

作業用ディレクトリに移動して、テスト用rubotyのGemfileを作ります。

# cd /my-workspace/
# ruboty -g

ruboty-genでテスト用プラグインのテンプレートを生成します。

# ruboty-gen g hoge

テスト用rubotyで、テスト用プラグインを有効にします

# echo "gem 'ruboty-hoge', :path => '`pwd`/ruboty-hoge'" >> ruboty/Gemfile

rubotyをインストールします。

# cd ruboty
# bundle install

rubotyを起動して動作確認します。

# bundle exec ruboty
> ruboty help
ruboty /hoge hoge/                 - TODO: write your description
ruboty /help( me)?\z/i             - Show this help message
ruboty /ping\z/i                   - Return PONG to PING
ruboty /who am i\?/i               - Answer who you are
> ruboty ping
pong
> ruboty hoge hoge
TODO: write a message.

テスト用に作ったプラグインを何も弄っていなければ、”TODO: ~” が出力されます。

 

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください