おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


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してやつとかありそうだ。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>