読者です 読者をやめる 読者になる 読者になる

ActionView::Baseのキャッシュの更新処理が変な気がする

rsyncRailsのテンプレートを同期した時に、たまに変更が反映されないことがある。

ActionView::Baseのテンプレートが更新されたかどうかのチェックは、「ファイルの変更時刻」と「コンパイル時刻」を比較していて、これがマズイんじゃないだろうか……。

@@compile_time[render_symbol] < File.mtime(file_name)
@@compile_time[render_symbol] = Time.now

Time.now ではなく File.mtime(file_name) を設定して、変更時刻同士を比較するのが正しいんじゃないのかなー。これだと、

コンパイル実行 → rsyncで更新(コンパイル以前のタイムスタンプ設定)

という場合に、キャッシュが更新されないのではという予想。検証はしてません。


バージョンは、actionpack-1.13.6。1ヶ月前にこのコードはbase.rbから消えてるので、もしかしたら最新だと直ってるかも。