RoR

2010-05-04 13 views
9

में किसी वर्ग को फिर से खोलने के लिए मैं रेल में String कक्षा को फिर से खोलने का प्रयास कर रहा हूं और मेरे ऐप का उपयोग करने के लिए एक और अधिक विधियों को जोड़ने का प्रयास कर रहा हूं। कोड लिखना कोई समस्या नहीं है - मेरा प्रश्न यह है कि इस कोड को कहां जाना चाहिए।RoR

मुझे एक अलग मॉडल फ़ाइल के अंदर कक्षा को फिर से खोलने के लिए मुझे समझ में नहीं आता है, क्योंकि इसका वास्तव में किसी भी मॉडल के साथ कुछ भी नहीं करना है। मैंने सोचा कि शायद config या lib में कहीं भी अर्थ होगा, लेकिन मैं अभी तक आरओआर के साथ विशेष रूप से अच्छी तरह से नहीं जानता हूं।

संक्षेप में, क्लास-संशोधित कोड को परिभाषित करने के लिए सबसे तार्किक स्थान कहां होगा, और कोड लोड होने पर/कहां पर निर्भर करता है?

उत्तर

18

सबसे तार्किक स्थान शायद config/initializers निर्देशिका में एक फ़ाइल में है। रेलवे बूट होने पर आपके द्वारा डाली गई कोई भी *.rb फ़ाइल स्वचालित रूप से निष्पादित की जाएगी। यदि आप चाहते हैं, तो आप उन्हें एक उप फ़ोल्डर में डाल सकते हैं, ताकि आप config/initializers/extensions/*.rb जैसे कुछ कर सकें।

7

मैं इन बंदर-पैच को न्यूनतम रखने की कोशिश करता हूं, केवल तभी जब वे मेरे कोड के सर्वोत्तम हित में स्पष्ट रूप से होते हैं।

हाल ही में मैंने फ़ाइलों को lib/monkey/string.rb, lib/monkey/hash.rb, आदि जैसे फ़ोल्डर्स में व्यवस्थित रखना पसंद किया है। इसके बाद मुझे अपने पर्यावरण में lib/बंदर फ़ोल्डर में सभी फ़ाइलों की आवश्यकता है। आरबी फाइल।

# Load all monkey-patches. 
Dir["lib/monkey/*.rb"].each {|monkeyfile| require monkeyfile} 

यह मेरी सभी कक्षा संशोधित कोड को एक स्थान पर अलग करता है, एक समस्या उत्पन्न होनी चाहिए। मैं कुछ हद तक नामकरण का भी आनंद लेता हूं, क्योंकि इससे कुछ सावधान रहना पड़ता है। किसी के पास एक बेहतर प्रणाली हो सकती है, यदि ऐसा है ... मुझे इसके बारे में सुनना अच्छा लगेगा!

+2

आप प्रारंभकर्ता निर्देशिका का उपयोग क्यों नहीं करेंगे? यह वही करता है जो आप यहां कर रहे हैं। – ryeguy

+0

मुझे शुरुआती उपयोगकर्ताओं का उपयोग करने पर विचार करना होगा, लेकिन शुरुआती पथ में डिफ़ॉल्ट कक्षाओं को संशोधित करने के रूप में मुझे कुछ बड़ा करने में थोड़ा गलत लगता है। – Alex

+1

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

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

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