ruby - How to replace exiting class in Rails console? -


कंसोल में:

  वर्ग लकड़हारा अंत l = logger.new  < / Pre> 

त्रुटि फेंकता है: तर्क त्रुटि: /home/zzz/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/ से तर्कों की गलत संख्या (1 से 0) Logger.rb: 268: 'आरम्भिक' में

क्यों यह लॉगर में /home/zzz/.rvm/rubies/ruby-1.9.2-p290/lib में उपयोग कर रहा है /ruby/1.9.1/logger.rb?

मैं जवाब देने की कोशिश करूंगा अपने दूसरे प्रश्न के लिए तो, रूबी कुछ अन्य लकड़हारा वर्ग का उपयोग क्यों करते हैं, और आपने खुद को परिभाषित करने का प्रयास क्यों नहीं किया?

रूबी की मूलभूत विशेषताओं में से एक वर्गों का पुन: खोलना है मान लीजिए आपके पास कुछ क्लास है जो पहले से परिभाषित है और आपके ऐप में लोड हो रहा है:

  वर्ग ए डीफ़ एफयू पुल 'एफू' एंड एंड एएनयू.फू # = & gt;   

यदि रूबी इंटरप्रिटर के बाद ऐसा कुछ मिलता है:

  वर्ग ए डीएफ़ बार 'बार' एंड एंड   P> यह वर्ग  A  को फिर से परिभाषित नहीं करता है, लेकिन यह परिभाषा पिछले एक से जोड़ती है परिणाम में पहले से ही परिभाषित वर्ग  हो जाता है नया उदाहरण विधि  बार :  
  एएनयू.फ़ू # अभी भी काम करता है # = & gt; Foo.new.bar # नई विधि # = & gt; बार   

रूबी ने तरीके कॉलिंग को संभालने के कारण, कक्षा की सभी आवृत्तियों को दूसरी परिभाषा (वास्तव में से पहले आरंभ किया गया था) फिर से खोलने) वर्ग को भी इस नई विधि बार प्राप्त करें। तो हर बार जब आप किसी वर्ग को फिर से खोलते हैं, तो आप कक्षा में और इस वर्ग के सभी प्रारंभिक संस्करणों के लिए नई कार्यक्षमता जोड़ते हैं।

क्लासेस को फिर से खोलने से मौजूदा क्लास के तरीकों को दोबारा लिखने की अनुमति मिलती है:

  वर्ग ए डीफ़ एफयू डालता है 'new foo' एंड एंड एएनयू.फू # = & gt; New_foo   

ध्यान में है कि इस सुविधा के साथ और रेल ने पहले से ही आपके लिए मानक लकड़हारा वर्ग लोड किया है, आपकी परिभाषा केवल कक्षा को फिर से खोलती है, लेकिन यह भी नहीं है कुछ भी बदला

Comments