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\/.*/)"
だから、それは動作しませんし、私はそれを実装するための正しい方向を取ったかどうか分からない。どんな入力も非常に高く評価されました
私はそれについて考えなかった、私はまだそれを把握する方法を知らないが、私はあなたが言ったことだと思う。それを指摘してくれてありがとう。たぶん私はキャッシュを気にするべきではなく、redmineは実稼働環境でそれを行い、リポジトリの変更を更新します。とにかく、私はたくさんのことを学ぶ必要があります... – chocoposh
それは普通のアプローチです。理想的には、キャッシュについては気にしません。オプションの有効期限を設定して値を設定し、値を更新する必要がある場合は内容を置き換えます。 memcachedはキャッシュキーを削除する方法を提供していません。他の値またはnullで置き換えることができます。ああ、答えがあなたを助けたので、それを受け入れることを検討:) – leonardoborges