2011年06月15日(Wed) いちにちごとに曇ったり晴れたり [長年日記]
● [Hiki] Ruby 1.9でHikiを動かす
このサイトのRubyが1.8.7から1.9.2になって以来動かなくなったまま 放置してしまっていたHikiサイトを 使いたいという方がいらっしゃたので、 重い腰をやっと上げて、とりあえず閲覧できるところまでこぎつけました。 パッチはgist: 1028700 として置いておきます。
Rubyのバージョンが上がって出ていたエラーは下記のようなものでした。
というわけでまずやったのは、ひたすら.force_encoding(Encoding.default_external)を付ける作業。
その途中で、下記のようなエラーももらいました。
うーん。わけがわからない。とりあえず escape(string)とunescape(string)をそれぞれ string.escapeとstring.unescapeにしたら回避できました。
もひとつ。 日本語のページ名をURLエスケープするとページ名のうしろの方が無くなってしまう。 これは、Ruby 1.8と1.9との間でのString#sizeの仕様の違いによるものでした。 Sting#bytesizeにして解決。
こんなところでしょうか。 Ruby 1.8ではString#force_encodingが無いので hiki.cgiで定義をしておいて、 手元では、1.8.7-p330と1.9.2-p180とでだいたい動くHikiになりました。
しっかしこういう作業は骨が折れますね。 手元では、テスト用のツリーでgitで管理しながらコードをいじりました。 基本的には、例外が出たあたりで 文字列のencodingなど確認したい情報をRuntimeErrorとしてraiseして、 wwwブラウザで確かめながら進んでいきました。 そして自分のしかけておいた閲覧頻度の制限にひっかかるという。
編集メールの送付とansi-sysプラグインも対応させなくちゃな。
(追記) ansi-sysは 0.8.4で対応ずみでした。
最近のツッコまれどころ