2009-04-16 16 views
18

कुछ की तरहमैं कंसोल से कैश किए गए खंड को कैसे देखूं?

Rails.cache.delete('site_search_form') 

काम करने के लिए प्रतीत नहीं होता। क्या यह संभव है? धन्यवाद।

+0

रेल का कौन सा संस्करण आप चल रहे हैं? कैश डिलीट विधि 2.1 में जोड़ा गया था। – vrish88

उत्तर

7

कैश खंड प्रविष्टियां Rails.cache के साथ आप जो भी एक्सेस करते हैं उससे थोड़ा अलग कुंजी के साथ बनाई जाती हैं।

उपयोग expire_fragment बजाय (यदि आप एक नियंत्रक को भेज सकते हैं): http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html#M000438

+0

यह मेरे लिए काम नहीं करता है। यदि यह आपके लिए काम नहीं करता है तो भी 'Rails.cache.delete_matched' विचार/site_search_form * '' – yivo

+0

रेल 3 के रूप में, खंड कैश के अंत में हैश है, जो उस दृश्य की सामग्री पर आधारित है जिसमें वे उत्पन्न होते हैं। ऐसा इसलिए होता है जब दृश्य बदलता है तो कैश स्वचालित रूप से बस्ट किया जाता है, लेकिन यह कुंजी द्वारा समाप्त होने में मुश्किल बनाता है। आप रेल को बता सकते हैं कि कैश कॉल में 'skip_digest: true' के साथ हैश को नहीं जोड़ना है। अधिक जानकारी: https://www.reinteractive.net/posts/197-if-you-explicitly-expire-cached-fragments-opt-out-of-cache-digests –

54

ActionController :: Base.new.expire_fragment (कुंजी)

+2

ruby-1.8.7-p334: 007> ActionController :: Base.new.expire_fragment (: नियंत्रक => 'मुख्य',: action => 'अनुक्रमणिका') NoMethodError: शून्य के लिए अपरिभाषित विधि 'host_with_port': NilClass – pixelearth

+1

रेल 3 के रूप में, खंड कैश के अंत में हैश है , जो उस दृश्य की सामग्री पर आधारित है जिसमें वे उत्पन्न होते हैं। ऐसा इसलिए होता है जब दृश्य बदलता है तो कैश स्वचालित रूप से बस्ट किया जाता है, लेकिन यह कुंजी द्वारा समाप्त होने में मुश्किल बनाता है। आप रेल को बता सकते हैं कि कैश कॉल में 'skip_digest: true' के साथ हैश को नहीं जोड़ना है। अधिक जानकारी: https://www.reinteractive.net/posts/197-if-you-explicitly-expire-cached-fragments-opt-out-of-cache-digests –

0

रेल 5 में मैं खराब करने के लिए निम्न कदम उठाए skip_digest: true का उपयोग किए बिना कैश। हमारी समस्या यह थी कि I18n स्ट्रिंग्स के मान को बदलने से गणना की गई कैश पचाने में प्रतिबिंबित नहीं होता है ताकि कैश स्वचालित रूप से बस्ट नहीं हो सके।

/ views/layouts/_footer.html.slim 
- cache :footer do 
    span= t('shared.footer') 

फिर रेल कंसोल में मैं चलाएँ::

fragment = ActionController::Base.new.view_context.cache_fragment_name(:footer, virtual_path: 'layouts/_footer.html.slim') 
ActionController::Base.new.expire_fragment(fragment) 

cache_fragment_namevirtual_path कीवर्ड तर्क के आधार पर डाइजेस्ट यह पता लगाने जाएगा

यहाँ दृश्य जहां कैश ब्लॉक परिभाषित किया गया है है।

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