2009年02月10日(Tue) 今日もいろいろあった [長年日記]
● [Ruby] ruby-1.8.7-p72を作ってみた
hsbtさんがやってくれたtDiary-pluginの ruby-1.9.1p0 動作チェックを見て、wether.rbが「動かないので修正が必要」と知って、どこまでできるか試してみることにした。
えーと、Ruby 1.9.1の歩き方を見ると、まずは1.8.7を使えと書いてある。(役にたつね。てへへ。)
というわけで、ftp://ftp.ruby-lang.org/pub/ruby/1.8/からruby-1.8.7-p72.tar.bz2をいただいてきて作ってみた。make test-allは0F0E。さすが。
…って、p72はREXMLのDoS脆弱性があるの?今回はローカルにtDiaryを動かすだけだからいいけど、えーと、ruby-1.8.7-p73以降はどこで入手するべきなのでしょう?Subversionレポジトリからcheckoutするのかな?
● [tDiary] 久しぶりにtDiaryをいじろうとしてみる。
えーと。まずはcheckoutかな。
さくっとtdiary/plugin/に移動して、 weather.rbとかja/weather.rbにテストケースが無いのをみてへこむ。 Legacy code。
どうしようかな。 まずは1.8.7-p72と1.9.1-p0で閲覧できるようにするか。
先は長いぞ…。/usr/sbin/vigrしてapacheグループを追加してみた。 今度は成功。
次はsymbolic linkで設置する方法を思いだす。 公開サーバで下記のような荒っぽいことをやらないようにね。 この環境ではDocumentRootが/var/www/htmlなので、
えーい、もう一度checkoutしちゃえ。
http://localhost/tdiary/trunk/ を見ると、 coreのディレクトリのアイコンが爆弾のマークなのが笑えますが。
あとはtDairy用のディレクトリなど。
tdiary.confはtdiary.conf.sampleからコピーして、 @data_path = '/var/www/html/tdiary/data' にしておいた。
/etc/httpd/conf/httpd.confでAllowOverrideをallにして、.htaccessは下記。
これでhttp://localhost/tdiary/trunk/core/index.rbが ruby-1.8.6-p111 (Momonga 4)で動くようになった。
index.rbとupdate.rbはどうしようかな。
tdiary.confで下記のようにしてみよう。
例えばindex-1.8.7.rbは下記。chmod a+x しておく。
この段階で./index-1.8.7.rbすると Permission denied - /var/www/html/tdiary/data//log/debug.log (Errno::EACCES) と言われた。
これで端末からは起動できるようになったけれど、 ApacheからはPermission deneied。はっ、やつか。
これでもだめ。あー、わかりました。 常用ユーザーのホームディレクトリにapacheさんが行けなかったんだ。 chmod o+x $HOME。
これで、やっと、下記のURLが使えるようになりました。
- http://localhost/tdiary/trunk/core/index-1.8.7.rb
- http://localhost/tdiary/trunk/core/index-1.9.1.rb
- http://localhost/tdiary/trunk/core/update-1.8.7.rb
- http://localhost/tdiary/trunk/core/update-1.9.1.rb
環境をつくるだけで時間切れが近いのう… T_T
● [Ruby][tDiary] お天気プラグインをruby-1.9.1で使えるようにする 成功したかな?編
たぶんnet/http.rbの微妙なAPIの変化にはまった模様。
まず1.8.7側からお天気プラグインの設定と利用。 「選択可能なプラグインはありません。あう。えーと、tdiary.confに下記を追加。
これでプラグイン選択からweather.rbを選び、 お天気プラグインを設定。これで本文を追記したらちゃんと天気が記録されました。 えらい。
さーて。1.9.1からこの日記を表示してみますよ。
ふむ。追うのは大変だけどきっと記録したファイルをASCII-8BITで読んでるんだね。 …これはdata/cache/*.parserが1.8.7と1.9.1とで互換じゃないからか。 これらのファイルを消すと、1.8.7が記録した天気を1.9.1で表示することができた。
しかし、1.9.1で天気を記録すると記録ファイルのerrorの項が 「undefined method `keys' for nil:NilClass」なんてなってる。 weather.rbの282-283行目をコメントアウトしてみると、 下記のようなバックトレースが得られた。
getの第二引数が今まではnilを許していたのが、 今後は{}にしなくちゃいけないのかしらん。 というわけでできたのが下記のパッチ。
(追記) makerss.rbを単体で有効にしてみたらちゃんと動いているように見えた。 他のプラグインとの組合せで不具合が発現するのかな。 cgi.newしてやつとかありそうだ。
最近のツッコまれどころ