2003年07月17日 [長年日記]
_ [tDiary] Namazuでにっき検索(2)。
CGIとして動かないsqueeze.rbくん、pluginとしてはちゃんと動作しているっぽい。上の文章を書いたらちゃんとhtmlが吐き出されたし。
_ [tDiary] Namazuでにっき検索(3)。
結局、めんどくさい方法でsqueeze.rbを動かした。まず、CGIだとエラーが追えなくて何を直したらいいかわからないので諦めてCMDモードで動かすことにした。そしたら、@data_path以下にある元データファイルを更新する権限が必要なようで、エラーが出てしまった。あそこはnobody権限でないと書き込めないので、@data_pathの中身を別の場所に一時的にコピーし(て権限をtelnetで入ったときのユーザにぬりかえ)、tdiary.confの@data_pathはそっちを見るようにして、再度squeeze.rbを実行してファイルを作成した。
・・・とこれだけ書くと単純なんだけど実際はいろいろと苦労していたりする。ココのサーバの環境がtelnetで入ったときのruby --versionが1.4.6とゆー今となっては化石のようなバージョンのrubyを指してしまっているようで、tdiary.rbまわりでがつがつエラーが出てしまっていた。そんなわけで、バージョンのせいだと気づくまでいろいろとtdiary.rbの中身を追っかけてしまったし。さらに、それに気づいた後もファイルの権限周りでエラーが出てることにも気づかないでdefaultio.rbの中身をやっぱり追いかけてしまったし。
何かあると環境の前にソースを疑って中身を追っかけて小手先の修正まで仕様と試みてしまうのはよくない傾向のような気がするので気をつけよう。
_ [tDiary] Namazuでにっき検索(4)。
なんとかnamazu、kakasiのインストールも終わりインデックスファイルを作成することができた。cgiでの検索もうまくいっているみたいだし。
やったね!と思ったのもつかの間、さっきやった方法にミスがあったらしく、タイトルが全て「hogehoge diary」になってしまった。どうもsqueeze.rbを動かすのに@data_pathにあるデータをほかの場所にコピーしたのだが、そのときにtdiary.confをいっしょにコピーしなかったのが原因らしい。
もー一回同じ方法をとってsqueezeしてもよかったのだが、squeeze.rbをCGIで動かしたときにInternal Server Errorが発生する原因をまじめに検証してみることにした。
とりあえず全体をbegin...rescue Exception...endで囲んで、エラーの発生個所を特定することにした。いろいろやってみたところ、原因が二つあるみたい。ひとつは、tdiary.confをreadlineして@optionsをevalするときに問題があるらしく、@optionsを設定するときに複数行にまたがることを考慮していないこと。もうひとつは、(なぜか私の環境では)@options['squeeze.output_path']の設定をしないと動かなかったこと。この二つを考慮することで、無事CGIモードでsqueeze.rbを動かすことができましたとさ。
_ [tDiary] Namazuでにっき検索(5)。
あ。squeeze.rbのサイトに、ちゃんと@options['squeeze.output_path']を書かないとダメな件が載ってた。わざわざいろいろデバッグした時間は無意味だったか(T-T)
_ [tDiary] Namazuでにっき検索(6)。
あとは、前にすのこさんとこでも話題になった、インデックスファイルの自動作成について考えよう。
・・・で、やっぱり、update_proc時にmknmzしてしまうのが一番っぽい結論に達した。さらっと作ったけど、こんな感じにしておけば、常に最新のインデックスになるだろう。更新に若干時間がかかるようになってしまったのが難点か。