at posts/single.html

カテゴリ機能の強化 (5)

ずいぶん放っておいたけど、カテゴリのキャッシュ時にエラーがでる件、少し調べてみようと思った。

今は、キャッシュ一覧に my プラグインを展開するために、きたさんの指摘にしたがって tdiary.conf に

@options['apply_plugin'] = true

と記述している。 以前はこの状態でツッコミや日記の更新をしようとすると、

(eval):488:in `eval'(eval):153:in `+'cannot convert nil into String (TypeError)

というエラーがでていた。 tDiaryを最新版に追随させると、日記の更新ではエラーにならなくなったみたいだけど、設定画面からカテゴリのキャッシュを作成しようとすると上記エラーがでる。

エラーが出ているのは eval( src ) の箇所なので、少しデバッグが大変。そこで tdiary.rb を少し修正して、エラーが出るときは src の内容をテキストファイルに書き出すようにした。

  return Safe::safe( secure ? 4 : 1 ) do
-    eval( src )
+    begin
+       eval( src )
+    rescue Exception
+       File.open("error.rhtml",'w') { |err|
+          err.write(src)
+       }
+       raise "#$! (#{$!.class})"
+    end
  end

ちなみに、拡張子を .rhtml としているのは、Web経由でこのファイルを取得できないようにするため。 これで原因を調べてみようっと。

関連する日記