openSUSE 11.2 + rvm + ruby 1.9.1 p378 + atig.rb + god + tiarra
これだけ色々あったら動かない原因とか分からんよ!
rvmのインストール
git clone http://github.com/wayneeseguin/rvm.git
cd rvm
./install
Ruby 1.9.1 p378のインストール
sudo zypper in libopenssl-devel zlib-devel readline-devel sqlite3-devel
rvm install 1.9.1
libopenssl-develはopenssl拡張ライブラリに、zlib-develはzlib拡張ライブラリに、readline-develはirb使うときに便利(というかないと超不便)なのでそれぞれ先に入れておきます。
あとatig.rbで使うsqlite3-rubyがsqlite3-develを必要とします。
必要gemのインストール
gem install rspec oauth sqlite3-ruby god
specを動かすためrspec入れていますが、openSUSEで動かす場合他の環境(Mac,Ubuntu,Debian)では出なかった問題で変になるのでやらなくてもいいかもです。修正めんどい。
sqlite3-rubyとgodはちょっとコンパイル入ります。
atig.rbのダウンロード
cd /opt
git clone http://github.com/mzp/atig
パスは /opt/atig だということにします。
atig.rbの修正
自分の環境の場合、spec動かすとこんなエラーが出ます。
rake spec (in /opt/atig) /opt/atig/atig/command/thread.rb:8:in `<module:Command>': uninitialized constant Atig::Command::Command (NameError) from /opt/atig/atig/command/thread.rb:7:in `<module:Atig>' from /opt/atig/atig/command/thread.rb:6:in `<top (required)>' from /opt/atig/atig/command/thread_spec.rb:4:in `require' from /opt/atig/atig/command/thread_spec.rb:4:in `<top (required)>' from /home/koutarou/.rvm/gems/ruby-1.9.1-p378/gems/rspec-1.3.0/lib/spec/runner/example_group_runner.rb:15:in `load' from /home/koutarou/.rvm/gems/ruby-1.9.1-p378/gems/rspec-1.3.0/lib/spec/runner/example_group_runner.rb:15:in `block in load_files' from /home/koutarou/.rvm/gems/ruby-1.9.1-p378/gems/rspec-1.3.0/lib/spec/runner/example_group_runner.rb:14:in `each' from /home/koutarou/.rvm/gems/ruby-1.9.1-p378/gems/rspec-1.3.0/lib/spec/runner/example_group_runner.rb:14:in `load_files' from /home/koutarou/.rvm/gems/ruby-1.9.1-p378/gems/rspec-1.3.0/lib/spec/runner/options.rb:133:in `run_examples' from /home/koutarou/.rvm/gems/ruby-1.9.1-p378/gems/rspec-1.3.0/lib/spec/runner/command_line.rb:9:in `run' from /home/koutarou/.rvm/gems/ruby-1.9.1-p378/gems/rspec-1.3.0/bin/spec:5:in `<main>' rake aborted!
これは atig/command/ 以下のクラス類が全て atig/command/command.rb で定義されている Atig::Command::Command を継承しているのにも関わらず、require の順序のせいで NameError が出ているっぽいです。
ちなみに spec を動かさずに直で ruby atig.rb としても同様のエラーが出るので、 atig/command/*rb を require する前段階で atig/command/command.rb を require してやれば解決します。 spec では解決していませんので、もっとちゃんとした対応するべきかもしれません。
17行目から20行目辺りまでを抜粋。
require 'atig/twitter' require 'atig/scheduler' require 'atig/command/command'
ちなみにこの問題、MacやUbuntu、Debianで同様にrvmで入れたRuby 1.9.1 p378を使った場合は再現しません。何が問題なのかは分かりませんが、openSUSEでビルドしたRubyは他のものと若干挙動が異なるようです。と理解するしかない。
tiarraのダウンロード
cd /opt
svn co http://svn.coderepos.org/share/lang/perl/tiarra/trunk/ tiarra
パスは /opt/tiarra だということにします。
tiarraの設定
networks {
(snip)
name: atig
(snip)
}
atig {
server: localhost 16668
name: from_kyushu sid
}
クライアントオプションを付けていますが、これはお好みで。
あと tiarra のパスワードもお忘れなく。
tiarra --make-password
出てきたものを general ブロックの tiarra-password に書いておきます。
tiarraの起動
./tiarra --quiet
godの設定ファイル作成
なんか色々やるの面倒だったので、とりあえずバックグラウンドで起動するものです。監視している意味は一切ありませんので、なんか好きなようにアクションを書き加えてください。
God.watch do |w| w.name = "atig.rb" w.interval = 30.seconds w.start = "ruby /opt/atig/atig.rb -h '127.0.0.1' -l /opt/atig/atig.log" w.start_if do |start| start.condition(:process_running) do |c| c.running = false end end end
ミソは -h オプション。これないとダメっぽいです。ちゃんと指定しましょう。
atig.rbの起動
god -c atig.god
oauth
#oauth@atig で示されたURLを開いて認証してください。もしURLも何も示されていなかった場合、 god の設定の atig.rb 起動しているオプションに -d を加えて、ログに出力されたURLを使用してください。
あとは #twitter@atig できゃっきゃうふふするといいと思います。