2011-08-22 7 views
7

के साथ एक्शन कैश का विस्तार करें मुझे अपने एप्लिकेशन में एक्शन कैश की समयसीमा समाप्त होने में कुछ समस्या आ रही है।कस्टम कैश_पैथ

यहाँ मेरी नियंत्रक है:

class ToplistsController < ApplicationController 
    caches_action :songs, cache_path: :custom_cache_path.to_proc 

    def custom_cache_path 
    "#{params[:when]}-#{params[:what]}-#{params[:controller]}-#{params[:action]}" 
    end 

    def songs 
    # ... 
    end 
end 

मैं किसी भी तरह कस्टम कैश पथ रीसेट करने में सक्षम होने की जरूरत है, लेकिन मैं कैसे को समझ नहीं सकता।

मैंने बिना सफलता के this technique का उपयोग करने का प्रयास किया है। ऐसा लगता है कि दल्ली, जो मेरा कैश इंजन है, regexp matcher का समर्थन नहीं करता है।

मैं जब इस कोड का उपयोग करने की कोशिश कर इस त्रुटि हो रही है:

expire_fragment(/songs/)

ActiveSupport::Cache::DalliStore does not support delete_matched

मैं डिबगिंग के लिए, कोड की इस पंक्ति का उपयोग करने की कोशिश की है, लेकिन यह ध्यान नहीं दिया जा रहा है।

before_filter only: [:songs] 
    expire_fragment(custom_cache_path) 
end 

मैं रेल 3.1.0.rc6, दल्ली 1.0.5 और रूबी 1.9.2 का उपयोग कर रहा हूं।

+1

आप इस मणि के साथ डेलिकैच के साथ रेगेक्स का उपयोग करते हैं: https://github.com/defconomicron/dalli-store-extensions –

+0

मैं इसे आज़माउंगा, धन्यवाद। – Oleander

उत्तर

0

before_filter ब्लॉक को क्रिया कैश में दोहराया गया था।
समाधान इसके बजाय एक खंड कैश का उपयोग करना है।

# Controller 
class ToplistsController < ApplicationController 
    helper_method :custom_cache_path 

    before_filter only: [:songs] 
    if params[:reset_cache] 
     expire_fragment(custom_cache_path) 
    end 
    end 

    def custom_cache_path 
    "#{params[:when]}-#{params[:what]}-#{params[:controller]}-#{params[:action]}" 
    end 

    def songs 
    # ... 
    end 
end 

# View 

<%= cache custom_cache_path do %> 
    Content that should be cached 
<% end %> 
0

आप समाधान here समाधान भी देखना चाहते हैं। अपने दृष्टिकोण के साथ आप अतिरिक्त पैरामीटर के साथ कार्यों की अवधि समाप्त कर सकते हैं।

संबंधित मुद्दे