Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

रूबी जादू को कैसे दूर करें और अपने रत्नों को कैसे समझें

जब आप रेल ऐप बनाते हैं, तो आप ढेर सारे रत्नों का उपयोग करेंगे। उनमें से कुछ पूरी तरह से जादुई लगते हैं! लेकिन यह जादू कैसे होता है?

अधिकांश रत्नों में, वे ऐसा कुछ नहीं कर रहे हैं जो आप नहीं कर सकते। यह सिर्फ रूबी कोड है। कभी-कभी यह जटिल होता है रूबी कोड। लेकिन अगर आप उस कोड को एक्सप्लोर करते हैं, तो आप समझ पाएंगे कि वह जादू कहां से आता है।

सोर्स कोड ढूँढना

यह समझने के लिए कि रत्न कैसे काम करता है, आपको उसका कोड खोजना होगा।

यदि कोई ऐसी विधि है जिसके बारे में आप अधिक जानना चाहते हैं, तो आपके पास स्रोत खोजने का एक आसान तरीका है: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

उसके बाद, आपके सभी रत्न वैसे ही वापस आ जाएंगे जैसे आपने उन्हें स्थापित करते समय रखे थे।

आप क्या एक्सप्लोर करने जा रहे हैं?

जब आप अपने रत्नों के अंदर कोड ढूंढते हैं, पढ़ते हैं और एक्सप्लोर करते हैं, तो आप उस कोड को समझ पाएंगे जिस पर आप निर्भर हैं। और अब आपको अनुमानों और अनुमानों पर निर्भर नहीं रहना पड़ेगा।

यह पोस्ट मूल रूप से विशेष रूप से मेरी सूची में भेजी गई थी। इस तरह की और पोस्ट हर शुक्रवार को अपने इनबॉक्स में पाने के लिए, यहां साइन अप करें!


  1. अपने रूबी तरीकों की जासूसी कैसे करें

    रूबी में एक अंतर्निहित अनुरेखण प्रणाली है जिसे आप TracePoint . का उपयोग करके एक्सेस कर सकते हैं कक्षा। कुछ चीज़ें जिन्हें आप ट्रेस कर सकते हैं, वे हैं मेथड कॉल, नए थ्रेड और अपवाद। आप इसका उपयोग क्यों करना चाहेंगे? ठीक है, यदि आप किसी निश्चित विधि के निष्पादन का पता लगाना चाहते हैं तो यह उपयोगी हो

  1. अपने रूबी कार्यक्रमों को कैसे डिबग और ठीक करें

    आपका प्रोग्राम कितनी बार ठीक वही करता है जो आप पहली बार चाहते हैं? कई बार हमारे प्रोग्राम हमारी अपेक्षा के अनुरूप काम नहीं करते हैं, इसलिए हमें रूबी को डीबग करना की कला का उपयोग करना पड़ता है। क्यों पता लगाने में हमारी मदद करने के लिए। आप निम्न त्रुटि संदेश से परिचित हो सकते हैं: undefined method

  1. अपने iPad और iPhone से QR कोड कैसे स्कैन करें?

    2018 की शुरुआत में, तकनीकी दिग्गज Apple ने iOS 12 के शानदार फीचर्स पेश किए। iPad और फोन पर स्कैन QR कोड एक ऐसी विशेषता थी जिसे Apple उपयोगकर्ताओं के अनुभव को अगले स्तर पर लाने के लिए जोड़ा गया था। यह सुविधा न केवल आपके जीवन को आसान बनाने में सक्षम है बल्कि टिकट, कूपन, उत्पाद सामग्री इत्यादि के बारे