tDiaryの設置

登録したXREAtDiaryを設置してみました。ヘタレな私は、とりあえず安定バージョンの1.4.5を選択。(大して変わらない気はするけど)

どうも/usr/bin/envが使えないようなので、index.rbとupdate.rbにrubyのパス(#!/usr/local/bin/ruby)を記述。とりあえず、デフォルト設定のままの"ほげほげ日記"が表示された。

.htaccessと.htpasswdも作成して、更新時のBASIC認証もクリア。
(ここまではまぁ順調。READMEの記述のとおり)

ところが、設定用画面で[OK]ボタンを押すとエラー発生。下のメッセージが表示された。

undefined method `to_euc' for "hoge":CGI::QueryExtension::Value (NoMethodError) /virtual/hoge/public_html/diary/tdiary.rb:748:in `initialize' /virtual/hoge/public_html/diary/update.rb:32:in `new' /virtual/hoge/public_html/diary/update.rb:32

to_eucメソッドが定義されてない,ってか。
XREARubyのモジュールは覗けない(よね。試してないけど)ので、手元のruby(1.8.1)のCGIモジュールのソースを眺めてみた。
どうもto_eucはtdiary.rbで次のように定義したメソッドを、

class String
def to_euc
NKF::nkf( '-m0 -e', self )
end

cgi.rbの1128行目で、Valueクラスに取り込ませているっぽい。

class Value < DelegateClass(String) # :nodoc:

delegate.rbの中身も眺めてみたけど、それにしてはcgiをrequireするのとStringクラスにto_eucを追加する順番がおかしい。逆じゃないの?と疑問を持ったので、逆にしてみたら動いた。ホントにこれでいいのかね?Rubyの素人には、よく分かんない。