2011-12-23 13 views
0

redmine 1.2/railsで2.3.11リポジトリのマークダウンファイルをhtml(redmine_markdown_extra_viewerと同じ)にレンダリングしていますが、結果をキャッシュしようとしています。コミットごとに更新されます。ランナーからRails.cache.delete_matchedを試す

私はリポジトリ変更をフェッチするgitフックを持っており、対応するキャッシュエントリもクリアしたいと思います。

(RepositoriesController ::エントリのオーバーライドで)キャッシュ生成:

cache_key =['repositories_md', @project.id.to_s, @path.to_s].join('/') 
puts cache_key 
@content = cache_store.fetch cache_key do 
    Kramdown::Document.new(@repository.cat(@path, @rev)).to_html 
end 
render :action => "entry_markdown" 

キャッシュをクリアする必要がありますフックが、効果はありません。

# This is ok 
ruby script/runner "Repository.fetch_changesets" 

# This not 
ruby script/runner "Rails.cache.delete_matched(/repositories_md\/.*/)" 

だから、それは動作しませんし、私はそれを実装するための正しい方向を取ったかどうか分からない。どんな入力も非常に高く評価されました

答えて

2

どのキャッシュバックエンドを使用していますか?

それはmemcachedのかFileStoreまたはMemoryStore以外、がサポートされていないされdelete_matchedメソッドの場合。

更新が完了すると、キャッシュされたコンテンツが期限切れになり、置き換えられるほうがよいでしょう。

+0

私はそれについて考えなかった、私はまだそれを把握する方法を知らないが、私はあなたが言ったことだと思う。それを指摘してくれてありがとう。たぶん私はキャッシュを気にするべきではなく、redmineは実稼働環境でそれを行い、リポジトリの変更を更新します。とにかく、私はたくさんのことを学ぶ必要があります... – chocoposh

+0

それは普通のアプローチです。理想的には、キャッシュについては気にしません。オプションの有効期限を設定して値を設定し、値を更新する必要がある場合は内容を置き換えます。 memcachedはキャッシュキーを削除する方法を提供していません。他の値またはnullで置き換えることができます。ああ、答えがあなたを助けたので、それを受け入れることを検討:) – leonardoborges

0

問題は、正規表現をフラグメント名として使用するときに、フラグメント名としてStringを使用することです。たぶん冗長になるかもしれません。私はDalli(Memcached)と同様の問題がありました。それが理由でした。

関連する問題