Hatena::ブログ(Diary)

Post-itみたいな

2010-05-03

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とかも入れ出すと訳が分からなくなってくるので、githubから直接持ってくることにしました。

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'

ちなみにこの問題、MacUbuntuDebianで同様に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 できゃっきゃうふふするといいと思います。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/from_kyushu/20100503/1272827658