2015-01-31 9 views
8

जब भी मैं (विचारों और शायद कुछ नियंत्रकों को छोड़कर) किसी भी कोड बदलने मैं:MyModel की एक प्रति मॉड्यूल पेड़ से हटा दिया गया है लेकिन अभी भी सक्रिय है

MyModel की एक प्रति मॉड्यूल से हटा दिया गया पेड़ लेकिन अभी भी सक्रिय है!

और मुझे अपने देव सर्वर को पुनरारंभ करना होगा।

मैंने इस मुद्दे पर इंटरवेब्स को कम किया है, और सबसे सामान्य रूप से कहा गया मूल कारण कुछ वर्गों से MyModel.some_method को कॉल कर रहा है जो स्वत: लोड नहीं है। मेरे पास lib में कक्षाएं हैं जो MyModel.find और MyModel.some_scope जैसी कॉल करती हैं; हालांकि, मैंने lib पेड़ में प्रत्येक फ़ाइल को स्वत: लोड करने के लिए रेल को कॉन्फ़िगर किया है। मैं अब तक app और यहां तक ​​कि config के तहत हर फ़ाइल सहित सभी चीज़ों के ऑटोलोडिंग को कॉन्फ़िगर करने के लिए गया था।

एक तथ्य जो प्रासंगिक हो सकता है वह है कि MyModel एसटीआई पदानुक्रम का आधार है। इसमें दो बच्चे हैं, और उनमें से एक बच्चा है।

यह मुझे पागल कर रहा है, क्योंकि मेरे पास समस्या निवारण के तरीके के बारे में कोई और विचार नहीं है। इस बीच, उत्पादकता नरक में चली गई है।

मुझे इसका स्रोत कैसे मिल सकता है?

उत्तर

3

इसका मतलब है कि आपके ऐप में अभी भी पुराने संस्करण का संदर्भ है। मुझे लगता है कि इसे स्टैक ट्रेस से बिल्कुल दिखाना चाहिए जहां इसे संदर्भित किया जा रहा है।

इसके अलावा, ऑटोलोड करने के लिए lib को जोड़ें, अगर यह स्वत: लोड होने वाला था, तो यह होगा। मुझे नहीं पता कि यह मॉडल क्या है लेकिन संभवतः आपको इसे ऐप/सेवाओं या ऐप/मॉडलों में रखना चाहिए (इससे कोई फर्क नहीं पड़ता कि यह ActiveRecord है या नहीं)।

+1

कम से कम मेरे लिए, मैंने प्रिये में एक स्टैक ट्रेस नहीं देखा जब तक कि मैंने 'wtf ??? 'कमांड का उपयोग नहीं किया। –

1

मैं एक ही मुद्दे में भाग गया। असल में, यह पुरानी संदर्भ के कारण होता है जब रेल को फिर से लोड करने की कोशिश कर रहा है, सबसे अधिक संभावना नीचे की तरह नेस्टेड मॉड्यूल/वर्गों के लिए होती हैं:

module A 
    def self.b 
    B 
    end 
end 

class C 
    def d 
    @d ||= D.new 
    end 
end 

आप करने के लिए इसे अद्यतन करने की आवश्यकता:

module A 
    def self.b 
    self::B # or A::B 
    end 
end 

class C 
    def d 
    @d ||= C::D.new 
    end 
end 
में

तो अपने मामले, प्रत्येक मॉड्यूल/कक्षा NestedModuleOrClassMyModel के तहत MyModel::NestedModuleOrClass पर अपडेट करने की आवश्यकता होगी।

इसे आज़माएं और मुझे बताएं कि यह आपके लिए काम करता है या नहीं।

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