जब आप रेल ऐप बनाते हैं, तो आप ढेर सारे रत्नों का उपयोग करेंगे। उनमें से कुछ पूरी तरह से जादुई लगते हैं! लेकिन यह जादू कैसे होता है?
अधिकांश रत्नों में, वे ऐसा कुछ नहीं कर रहे हैं जो आप नहीं कर सकते। यह सिर्फ रूबी कोड है। कभी-कभी यह जटिल होता है रूबी कोड। लेकिन अगर आप उस कोड को एक्सप्लोर करते हैं, तो आप समझ पाएंगे कि वह जादू कहां से आता है।
सोर्स कोड ढूँढना
यह समझने के लिए कि रत्न कैसे काम करता है, आपको उसका कोड खोजना होगा।
यदि कोई ऐसी विधि है जिसके बारे में आप अधिक जानना चाहते हैं, तो आपके पास स्रोत खोजने का एक आसान तरीका है:method
और source_location
. मैंने इनके बारे में पहले कुछ लिखा था . यहां एक उदाहरण दिया गया है:
irb(main):001:0> ActiveRecord::Base.method(:find).source_location
=> ["/usr/local/lib/ruby/gems/2.1.0/gems/
activerecord-4.2.0.beta4/lib/active_record/core.rb", 127]
लेकिन क्या होगा यदि आप एक से अधिक विधियों में रुचि रखते हैं?
यदि आपके पास रेल ऐप की निर्देशिका के अंदर एक कंसोल खुला है, तो आप सीधे रत्न के कोड पर जा सकते हैं:
~/Source/gem_example[master] jweiss$ bundle open rack
यदि यह आपके Gemfile
में है , bundle open rack
पूरा rack
खोल देगा आपके संपादक में मणि। आप इसके अंदर की सभी फाइलों को आराम से ब्राउज़ कर सकते हैं।
आप कहां से शुरू करते हैं?
अब जब आप जानते हैं कि रत्न का कोड कहां है, तो आप इसे कैसे समझना शुरू करते हैं?
यदि आप यह जानने का प्रयास करते हैं कि activerecord
. कैसे lib/active_record.rb
पढ़कर काम करता है , आप कहीं नहीं पहुंचेंगे। आपको बस बहुत सारे autoload
मिलने वाले हैं s और require
स.
किसी रत्न को बाद समझना सबसे आसान है आपका ऐप इसका थोड़ा सा उपयोग करता है। एक बार जब आप यह जान लेते हैं कि रत्न आपके लिए किस तरह का काम कर रहा है। इस तरह, आपको पहले से ही पता चल जाएगा कि आपको किन दिलचस्प कक्षाओं और विधियों से शुरुआत करनी चाहिए।
आपके पास कुछ दिलचस्प तरीकों के नाम होने के बाद, आप source_location
. का उपयोग कर सकते हैं , परियोजना में खोजें अपने संपादक में, या ag कमांड लाइन पर यह देखने के लिए कि उन विधियों को कहाँ परिभाषित किया गया है। और वह तब होता है जब मज़ा शुरू होता है।
मणि का कोड आपकी मशीन पर है, है ना? इसका मतलब है कि आप इसे अपनी इच्छानुसार बदल सकते हैं! आप इसे तोड़ भी सकते हैं, और किसी को पता नहीं चलना चाहिए।
जब मैं यह समझने की कोशिश कर रहा हूं कि मणि कैसे काम करता है, तो मैं सिर्फ कोड नहीं पढ़ता। मैं puts
मणि में बयान, मैं यह पता लगाने के लिए अपवाद फेंकता हूं कि मेरे ऐप को कुछ पंक्तियों में कैसे मिला, और मैं यह समझने के लिए कोड के साथ गड़बड़ करता हूं कि लेखक ने इसे इस तरह क्यों लिखा है।
एक बार जब आप जानते हैं कि चाल कैसे की जाती है, तो यह बहुत कम जादुई है। और आपको अनुमान नहीं लगाना पड़ेगा अजीब परिस्थितियों में वह कोड कैसे कार्य करेगा, क्योंकि आप इसे स्वयं देख पाएंगे।
अपने बाद सफाई करना
आपके द्वारा जेम कोड में गड़बड़ी करने के बाद, आपका ऐप बहुत खराब स्थिति में हो सकता है। यह शायद अब और नहीं चलता! और अगर ऐसा होता भी है, तो यह उन सभी puts
को स्पैम करने वाला है आपके द्वारा अपने कंसोल में जोड़े गए कथन।
लेकिन रूबीगेम्स के पास चीजों को वापस सामान्य करने का एक त्वरित तरीका है:
~ jweiss$ gem pristine activerecord -v 4.2.0
Restoring gems to pristine condition...
Restored activerecord-4.2.0
या, यदि आपको याद नहीं है कि आपने किन रत्नों के साथ खिलवाड़ किया है, और आप वास्तव में धैर्यवान हैं:
~ jweiss$ gem pristine --all
उसके बाद, आपके सभी रत्न वैसे ही वापस आ जाएंगे जैसे आपने उन्हें स्थापित करते समय रखे थे।
आप क्या एक्सप्लोर करने जा रहे हैं?
जब आप अपने रत्नों के अंदर कोड ढूंढते हैं, पढ़ते हैं और एक्सप्लोर करते हैं, तो आप उस कोड को समझ पाएंगे जिस पर आप निर्भर हैं। और अब आपको अनुमानों और अनुमानों पर निर्भर नहीं रहना पड़ेगा।
यह पोस्ट मूल रूप से विशेष रूप से मेरी सूची में भेजी गई थी। इस तरह की और पोस्ट हर शुक्रवार को अपने इनबॉक्स में पाने के लिए, यहां साइन अप करें!