2011-12-23 27 views
0

關於redmine 1.2/rails 2.3.11我將存儲庫降價文件作爲html(如redmine_markdown_extra_viewer那樣),現在我試圖緩存結果,應該在每次提交時更新。試圖Rails.cache.delete_匹配從亞軍

所以我有一個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或任何東西比FileStoreMemoryStore其他的delete_matched方法不支持

您可能最好讓它們過期,並在更新時更換緩存的內容。

+0

我沒有想過,我不知道如何弄清楚,但我想這就是你所說的。感謝您指出了這一點。也許我不應該關心緩存,redmine會在生產環境中執行它,並更新它的存儲庫更改。無論如何,我需要學習很多... – chocoposh 2011-12-23 11:53:59

+0

是的,這是正常的方法。理想情況下,我們不關心緩存。我們設置該值,具有可選的到期時間,並且當需要刷新值時,我們只需更換內容。這樣memcached甚至不會給你一種刪除緩存鍵的方法。您只能用另一個值替換它或爲null。哦,因爲答案幫助你,考慮接受它:) – leonardoborges 2011-12-23 12:16:21

0

問題是,當使用正則表達式作爲片段名稱時,嘗試使用字符串作爲片段名稱。也許會變得冗長。我和Dalli(和Memcached)有類似的問題,這就是原因。