2012-11-09 11 views
35

हम रेल 3.2 एप में Rails.cache का उपयोग करके आईडी/पथ मैपिंग कैश करते हैं। कुछ मशीनों पर यह ठीक काम करता है, लेकिन अन्य मूल्यों पर गलत हैं। कारण ट्रैक करना मुश्किल है इसलिए मेरे पास Rails.cache के बारे में कुछ प्रश्न हैं। क्या यह परीक्षणों के बीच शुद्ध है? क्या यह संभव है कि विकास मोड में कैश किए गए मान परीक्षण मोड में उपयोग किए जाते हैं? अगर यह शुद्ध नहीं है, तो चश्मा चलाने से पहले मैं इसे कैसे कर सकता हूं?Rails.cache परीक्षण के बीच शुद्ध है?

मेरे कैश दुकान विन्यास है:

#in: config/environments/development.rb 
config.cache_store = :memory_store, {:size => 64.megabytes} 

#in: config/environments/production.rb 
# config.cache_store = :mem_cache_store 
+1

वहाँ 'के लिए test' वातावरण है:

Rails.cache.fetch('time') { Time.now } 

इसके अलावा रेल कैशिंग मार्गदर्शिका देखें परीक्षण। – ck3g

+0

मुझे पता है, लेकिन मेरे पास सिर्फ इन दो entires 'config.cache_store' के लिए है। – mrzasa

उत्तर

32

जोड़ें:

before(:all) do 
    Rails.cache.clear 
end 

कैश से पहले प्रत्येक कल्पना फ़ाइल चलाया जाता है को मंजूरी दे दी है।

जोड़ें:

before(:each) do 
    Rails.cache.clear 
end 

कैश प्रत्येक कल्पना से पहले मंजूरी दे दी है।

आप इसे विश्व स्तर पर (कल्पना फ़ाइल या मामले के अनुसार यह बिखरने से अधिक अनुशंसित) लागू कर दिया है करने के लिए RSpec.configure ब्लॉक के भीतर spec/spec_helper.rb अंदर इस डाल सकते हैं।

डिफ़ॉल्ट रूप से आरएसपीईसी स्वचालित रूप से कैश को साफ़ नहीं करता है।

# config/environments/test.rb: 
config.cache_store = :null_store 

NullStore सुनिश्चित करता है कि कुछ भी नहीं कभी संचित किया जाएगा:

+14

नोट, जो रन के बीच कैश को साफ़ नहीं करेगा, केवल आसपास के दायरे के अंदर सभी परीक्षणों के बीच होगा। इससे पहले (प्रत्येक) हो सकता है कि आप क्या चाहते हैं। – Woahdae

+0

धन्यवाद, लेकिन यह ठीक है। गलत डेटा उस दायरे के बाहर कैश किया गया था। – mrzasa

+2

इसे पहले बदलने के बारे में: प्रत्येक – baash05

55

एक अधिक कुशल (और आसान) विधि NullStore उपयोग करने के लिए परीक्षण वातावरण का कैश स्थापित करने के लिए है।

नीचे कोड में उदाहरण के लिए, यह हमेशा ब्लॉक के माध्यम से आते हैं और वर्तमान समय वापस आ जाएगी: http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-nullstore

+27

इसके साथ एकमात्र समस्या यह है कि आप कैशिंग का परीक्षण नहीं कर सकते हैं। – baash05