2011-06-10 5 views
5

मैं टेस्टयूनीट के साथ स्पार्क और कैपिबरा सेट करने की कोशिश कर रहा हूं, और को test.rb कॉन्फ़िगरेशन समस्या में चला रहा हूं।स्पार्क कैपिबरा, config.cache_classes संघर्ष

मुद्दा Spork की आवश्यकता है कि config.cache_classes, गलत पर सेट किया जाता है कि इतना है कि मॉडल में परिवर्तन जब Spork पुनर्स्थापित करने के लिए सभी समय बिना परीक्षण चलाने परिलक्षित किया जा सकता है।

दूसरी ओर, कैपिबरा को लगता है कि config.cache_classes को सत्य पर सेट किया जाना चाहिए, अन्यथा एकीकरण परीक्षण बस काम नहीं कर रहा है।

मैं बस इसके लिए कोई संभावित समाधान/स्पष्टीकरण ढूंढ रहा हूं। यह ऐसा कुछ है जो केवल TestUnit के भीतर मौजूद है, या यह शायद बग है और मुझे इसकी रिपोर्ट करनी चाहिए? कोई मदद बहुत बड़ी होगी सराहना की!

उत्तर

3

मैं this एक जैसा दृष्टिकोण लेने की अनुशंसा करता हूं। ,

Spork.each_run do 
    ActiveSupport::Dependencies.clear 
    ActiveRecord::Base.instantiate_observers 
end if Spork.using_spork? 

उम्मीद है कि इस cache_classes Capybara के लिए सही हो करने की अनुमति देगा: मुख्य बात आप क्या करना चाहते जाएगा सच करने के लिए अपने config.cache_classes सेट कर दिया जाता है, लेकिन हर रन पर अपने मॉडल और निर्भरता फिर से लोड करने के लिए मजबूर Spork लेकिन यह परीक्षण मॉडल के बीच आपके मॉडल और पर्यवेक्षकों को पुनः लोड करने की अनुमति भी देगा।

+0

मैं इस समस्या के समाधान के लिए पूरी तरह से खोज कर रहा हूं, और जो कुछ भी मैं देखता हूं वह टिप्पणियां है जो "इसे आजमाएं" और "कुछ ऐसा करें" और "उम्मीद है" कहें। दुर्भाग्यवश, यह उत्तर दूसरों की तुलना में समस्या को हल करने के करीब नहीं आता है। –

1

मैं स्पार्क और ककड़ी के साथ एक ही मुद्दे में भाग गया। मुझे मिला समाधान:

config.cache_classes = (ENV['DRB'] == 'true' ? false : true) 

स्पार्क डीआरबी पर्यावरण सेट करता है। मुझे नहीं लगता कि यह हल करने का यह सबसे शानदार तरीका है, लेकिन यदि कैपिबरा कुछ env चर सेट करता है, तो आप इसका उपयोग कर सकते हैं?

+0

यही वह है जो मैंने किया। cache_classes = झूठी मुझे पूर्ण परीक्षण सूट चलाते समय अन्य स्थानों में बड़ी पीड़ा का कारण बनती है, लेकिन अगर मैं स्पार्क चला रहा हूं, तो मैं आम तौर पर कार्य केंद्रित करता हूं और डीबग जोड़ता हूं, इत्यादि भी ऊपर दिए गए प्रत्येक_रुन जोड़ों के साथ, यदि cache_classes को सत्य पर सेट किया गया था , स्पार्क बस मेरे लिए पुनः लोड नहीं होगा। –