2011-01-13 9 views
6

समय-समय पर मुझे यह अपवाद मिलता है:एक "समाप्त वस्तु" क्या है, और मैं इस पर विधियों को क्यों नहीं बुला सकता?

NotImplementedError: method `at' called on terminated object 

कोड की इस पंक्ति पर:

next if Hpricot(html).at('a') 

इस त्रुटि का क्या अर्थ है? मैं इससे कैसे बच सकता हूं?

+0

क्या यह भी होता है यदि आप हर समय प्रदर्शन करने के बजाए पूरे लूप से पहले एक वैरिएबल (एचटीएमएल) 'के परिणाम को आवंटित करते हैं? –

+0

'html' लूप पैरामीटर है, इसलिए मैं इसे * लूप से पहले * नहीं कर सकता, हालांकि मैं लूप के शीर्ष पर 'doc = hpricot (html)' जैसे कुछ कर सकता था और 'doc.at' (' एक ') '। मैं इसे –

उत्तर

0

यह एक लिंकिंग समस्या हो सकती है। जांचें कि आपने एक्सटेंशन को दो बार लिंक नहीं किया है।

+0

आज़मा दूंगा "एक्सटेंशन को दो बार लिंक करें", क्या आपका मतलब है कि "एक्सटेंशन को दो बार" की आवश्यकता है? (यह सुनिश्चित करने के लिए डिज़ाइन की गई 'आवश्यकता' नहीं है कि इससे समस्याएं नहीं आती हैं?) –

1

आपके द्वारा उपयोग की जाने वाली लाइब्रेरी कस्टम सी एक्सटेंशन का उपयोग करती है। सी एक्सटेंशन में, यह एक रूबी ऑब्जेक्ट पर एक विधि को कॉल करने का प्रयास कर रहा है जो कचरा-संग्रहित हो चुका है।

यह शुद्ध रूबी में नहीं हो सकता है, क्योंकि कचरा कलेक्टर केवल उन्हीं वस्तुओं को मुक्त करेगा जो किसी भी संदर्भ से अब उपलब्ध नहीं हैं। लेकिन सी में, एक रूबी ऑब्जेक्ट में एक संदर्भ होना संभव है, जहां एक कचरा कलेक्टर चेक नहीं करता है (उदाहरण के लिए, कंपाइलर ने एक सीपीयू रजिस्टर में एक चर डाल दिया हो सकता है)।

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

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