さくらでtig.rbを動かす

さくらでirssi動かし始めた - すぎゃーんメモの続き。
せっかくirssiが動いたので次はtig.rbを。
基本的にlistは作っているけどほとんど使っていないので使用しない方向で。@hokacchaのものを使わせていただきます。
http://webtech-walker.com/archive/2010/01/29165709.html

git clone git://github.com/hokaccha/net-irc.git

でexample/tig.rbを動かす。


rubyのことはよく分かっていないけど、gemでjsonを入れないと動かないっぽい。
さくらサーバーに Rubygems をインストールする - make world

wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
tar zxvf rubygems-1.3.5.tgz
ruby setup.rb --prefix=$HOME/local

でinstallできたっぽい。
.zshrcに環境変数追加。

export RUBYLIB=$HOME/local/lib
export GEM_HOME=$HOME/local

で、

gem18 install json

でいけるかと思いきや、"chown/chgrp: Operation not permitted"とか言われて怒られる。
もう一個、RB_USER_INSTALLという環境変数も必要っぽい。
さくらインターネットで、gem install すると「chown/chgrp: Operation not permitted 」と叱られる件の対応 | JAM☆ぱん

alias gem="RB_USER_INSTALL=1 gem18"
gem install json

と適当なalias書いてインストールした。


で、ようやくtig.rbを動かせる。

./tig.rb -n 'sugyan mentions' &

とかで動かすらしい。
$HOME/.irssi/configでは

servers = (
  {
    address = "localhost";
    chatnet = "TIG";
    port = "16668";
    password = "********";
    use_ssl = "no";
    ssl_verify = "no";
    autoconnect = "yes";
  },
...
);

chatnets = {
  TIG = { type = "IRC"; };
...
};

とか書いておく。irssiで"/connect TIG"で接続。


出てきたエラー。

D, [2010-02-08T00:12:01.107555 #5770] DEBUG -- : ["POST", "https://twitter.com/account/update_profile.json"]
E, [2010-02-08T00:12:01.396691 #5770] ERROR -- : #<OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed>
D, [2010-02-08T00:12:01.396827 #5770] DEBUG -- : SEND: :twittergw NOTICE #twitter :Fatal SSL error was happened #<OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed>
#<OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed>

SSLで何かしようとして失敗しているようだ。色々ググって調べてみる。
tig.rb のアップデート - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。 - subtech
あーありがち - Ruby の SSL の証明書検証の失敗でハマっていた
タイトル未定:Rubyでnet/httpsで通信 - livedoor Blog(ブログ)
Ruby Reference Manual
よく分からなかったけど、証明書のパスを明示的に指定すると良いっぽい。さくらの環境では以下のように一行書き換えたら動くようになった。

diff --git a/examples/tig.rb b/examples/tig.rb
index 6a282e1..69ef3ff 100755
--- a/examples/tig.rb
+++ b/examples/tig.rb
@@ -2149,6 +2149,7 @@ class TwitterIrcGateway < Net::IRC::Server::Session
                        http.use_ssl     = true
                        http.cert_store = @cert_store
                        http.verify_mode = OpenSSL::SSL::VERIFY_PEER
+                        http.ca_file = '/usr/local/share/certs/ca-root-nss.crt'
                end
                http
        rescue => e

ちゃんと何かを設定すればtig.rbを書き換えなくても動くようにできるのかな…