この日記にツッコミを入れたい人は、ツッコミを入れたい日付をクリックすると、フォームが現れることもある模様です。
disp_referrer.rbを眺めてみる。何をやってるか頭に入ってないんでピープホールデバッグだけど……
171行目あたり、DispRef2CachePathクラスのcachesメソッドの返すキャッシュファイル名の中にvolatile.tdr2.cacheが入ってないな。それが何か関係あるかはわからないけど。
ただ、DispRef2CachePath#clearを呼んでもvolatile.tdr2.cacheは消されないってことではある。DispRef2CachePath#shrinkも同様。だけどそもそもキャッシュを生成しちゃいけないそうなんで、あんまり関係ないんだろうなぁ。
894行目のDispRef2Refs#initializeの「date = date.respond_to?( :date ) ? diary.date : nil」という行は「date = diary.respond_to?( :date ) ? diary.date : nil」という意図ですよね?
ここまででdateという変数は出てきてないからdate == nilで、date.respond_to?(:date)は必ずnilになって、volatileの指定と見做されると思われます。
で、日付のcacheを読み込むときでもvolatileを読み込むし、書き込みもvolatileにしか書かないからcacheが膨れ上がる。しかもshrinkもされない、って感じじゃないかなぁ。
キャッシュを使うか使わないかってDispRef2CachePathクラスやDispRef2PStoreクラスを定義するときに決定されるような気がするんだけど、このクラス定義のところのif文(158行目)が「unless @conf and @conf.secure then」としか訊いてないから「@options[disp_referrer2.no_cache]」の値とは無関係になっちゃってるような気がする。実際に使われているところを見ないとなんともだけど……
というわけで、とりあえず「その2」と「その3」についてパッチを作ってここのにっきには適用してみました。しばらく様子を見てまた報告します。
適用したパッチはこれです。
たださんの修正も入ったみたいだからもう要らないかな。ま、いいや。