0

redmine 1.2 / rails 2.3.11では、リポジトリのマークダウンファイルをhtmlとしてレンダリングしています(redmine_markdown_extra_viewerのように)。現在、結果をキャッシュしようとしています。これは、コミットごとに更新する必要があります。

だから私はリポジトリの変更をフェッチするgitフックを持っています、そして私はそれが対応するキャッシュエントリもクリアすることを望みます。

キャッシュの生成(RepositoriesController :: entryオーバーライド内):

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\/.*/)"

だからそれはうまくいかず、それを実装するために正しい方向に進んだかどうかさえわかりません。どんな入力でも大歓迎です!

4

2 に答える 2

4

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

memcachedまたはまたは以外の場合FileStoreMemoryStoreこのdelete_matchedメソッドサポートされていません。

おそらく、それらを期限切れにして、更新されたときにキャッシュされたコンテンツを置き換える方がよいでしょう。

于 2011-12-23T11:41:13.660 に答える
0

問題は、フラグメント名として正規表現を使用する場合、フラグメント名として文字列を使用してみることです。多分冗長になります。Dalli(Memcachedを使用)でも同様の問題が発生しました。それが理由です。

于 2016-05-13T13:18:56.450 に答える