क्या आपने कभी अपने कोड को डीबग करने की कोशिश की है puts स्टेटमेंट टाइप करके और उम्मीद करते हैं कि वे अंततः वहीं दिखाई देंगे जहां उन्हें होना चाहिए? आप जानते हैं कि मेरा क्या मतलब है - आप टाइप करते हैं:
puts “This worked!"
कोड में और फिर इसे टर्मिनल में चलाते हैं, केवल यह देखने के लिए कि कुछ भी दिखाई नहीं देता। या शायद आपने Rubyists के लिए उपलब्ध फैंसी डीबगिंग टूल्स के बारे में सुना है लेकिन उन्हें आज़माने से डरते हैं। तो इसके बजाय आप डीबगिंग के स्पेगेटी मेथड के लिए जाते हैं: अपने टेक्स्ट एडिटर पर कोड फेंको और देखो कि क्या चिपकता है। समस्या यह है कि यह मेथड समाधान की गारंटी नहीं देता।
डीबगिंग कुछ ऐसा है जिसे आप अपने कोडिंग जीवन के बाकी हिस्से के लिए करते रहेंगे। यह केवल जूनियर डेव्स के लिए नहीं है! जितनी जल्दी आप उन टूल्स को सीख लेंगे जो आपके कोड में बग्स खोजने में आपकी मदद करते हैं, लंबे समय में आप उतने ही बेहतर होंगे।
तो कौन से टूल्स हैं? जबकि कई विकल्प हैं, आज हम उन महान टूल्स में से एक में झांकने जा रहे हैं जिन्हें हर Rubyist को पता होना चाहिए कि कैसे उपयोग करना है - Pry। हम सीखेंगे कि यह कैसे काम करता है और यह क्यों महत्वपूर्ण है।
Pry क्या है?
Pry आपके प्रोग्राम को फ्रीज कर देता है ताकि आप अपने कोड के अंदर जा सकें और पता लगा सकें कि क्या हो रहा है और क्या ठीक करने की आवश्यकता है। Pry पहली नज़र में भ्रमित करने वाला लग सकता है, लेकिन एक साथी जूनियर Ruby डेव से लें - यह जितना अधिक आप इसका उपयोग करते हैं उतना आसान हो जाता है, और जल्द ही आप इसके बिना प्रोग्राम नहीं करना चाहेंगे।
Pry स्टेरॉयड्स पर IRB की तरह है
संभावना है, आप IRB (इंटरएक्टिव Ruby शेल) का उपयोग करने में सहज हो गए हैं जहां आप अपना कोड ले सकते हैं और यह पता लगाने के लिए इसे एक प्लेग्राउंड में चला सकते हैं कि क्या काम करता है और क्या नहीं। यह डीबगिंग के लिए भी एक उपयोगी टूल हो सकता है। Pry का हिस्सा इसी तरह से काम करता है, लेकिन अतिरिक्त सुविधाओं के साथ। IRB और Pry दोनों REPL कमांड्स का उपयोग करते हैं: रीड, इवैलुएट, प्रिंट, और लूप। लेकिन Pry आपको डीबगिंग करते समय आगे जाने की अनुमति देता है। उदाहरण के लिए, Pry आपको कलर-कोडेड सिंटैक्स देता है, जो तब मदद करता है जब आप यह पता लगाने की कोशिश कर रहे होते हैं कि कोड निष्पादित होने पर क्या होगा। यह गलतियों को देखना आसान बनाता है, जो आपके कोड को ठीक करना आसान बनाता है।
नमूना कोड

डीबगिंग के बारे में एक नोट
यह पहले ही कहा जा चुका है, लेकिन इसे फिर से कहने लायक है - डीबगिंग कुछ ऐसा है जो सभी प्रोग्रामर अपने करियर के दौरान करते हैं। इन टूल्स को सीखने में कुछ भी जूनियर नहीं है! तो जितनी जल्दी आप उन्हें सीख लेंगे, उतना बेहतर प्रोग्रामर आप होंगे।
Pry के साथ ब्रेकपॉइंट्स सेट करना
अब Pry की सबसे अच्छी विशेषताओं में से एक को देखने का समय आ गया है - अपने कोड में ब्रेकपॉइंट्स सेट करना। मान लीजिए कि आपको अपने कोड को उस तरह चलाने में वास्तव में कठिन समय हो रहा है जैसा आपने उम्मीद की थी। (हम सब वहाँ रहे हैं, है ना?)
आप जो कर सकते हैं वह कोड के उस हिस्से में एक ब्रेकपॉइंट सेट करना है जो अपेक्षा के अनुरूप काम नहीं कर रहा है और फिर आप Pry के एक संस्करण में समाप्त होंगे, लेकिन एक ऐसे बिंदु पर जो फ्रीज है। इसे समझाने का सबसे अच्छा तरीका एक उदाहरण के साथ है।
मान लीजिए कि हम यह पता लगाने की कोशिश कर रहे हैं कि हम जिस यूज़र को देखना चाहते हैं वह ठीक से सेट है या नहीं। सबसे पहले, हम अपने कोड में binding.pry जोड़ सकते हैं। उस कोड की लाइन के ठीक ऊपर binding.pry सेट करें जो परेशानी पैदा कर रही है और फिर कोड चलाएं।

अगला, हम उस पेज को हिट करने की कोशिश करते हैं जो इस कोड को ट्रिगर करेगा। चूंकि हम Rails सर्वर को स्थानीय रूप से चला रहे हैं, हम जाएंगे: localhost:3000/users/1
आप पाएंगे कि आप एक IRB-जैसे कंसोल में पहुंच जाते हैं जहां आप अपने कोड को टेस्ट कर सकते हैं और देख सकते हैं कि क्या हो रहा है।

इस बिंदु पर, हम चेक कर सकते हैं कि '@user' सही यूज़र आईडी पर सेट है या नहीं।

हम यह भी चेक कर सकते हैं कि हमारा यूज़र लॉग इन है या नहीं:

अगर कुछ नहीं होता तो क्या?
कभी-कभी आप अपने ब्रेकपॉइंट्स रखेंगे, अपना कोड चलाएंगे, और Pry के अंदर उतरने के बजाय, कुछ भी नहीं होता हुआ लगता है। हालांकि यह निराशाजनक हो सकता है, यह एक सुराग देता है। इसका मतलब है कि आपका कोड कभी भी Pry को ट्रिगर नहीं करता क्योंकि यह कभी इतना आगे नहीं पहुंचा। तो आप क्या करते हैं? आप कोड में पहले एक नया ब्रेकपॉइंट सेट करते हैं और देखते हैं कि क्या यह काम करता है। हालांकि यह थकाऊ लग सकता है, यह वास्तव में आपको महत्वपूर्ण जानकारी दे रहा है!
मदद मांगने का समय
एक जूनियर Rubyist के रूप में, कभी-कभी आपको अधिक वरिष्ठ डेवलपर से मदद मांगने की आवश्यकता होगी। समस्या यह तय करना है कि डीबगिंग कब जारी रखनी है और कब मदद के लिए कॉल करना है। डीबगिंग करते समय, समस्या को दोहराने की कोशिश करना एक अच्छा विचार है। Pry के साथ अपने ब्रेकपॉइंट्स सेट करें और कोड में गहराई से जाएं। यदि 20-30 मिनट के बाद आप समाधान खोजने के करीब नहीं हैं, तो शायद सहायता मांगने का समय आ गया है।
Pry को एक कोशिश दें
जब आप Pry को अपने डीबगिंग टूल्स के शस्त्रागार में जोड़ने के लिए तैयार हों, तो आपको कुछ चीजें करने की आवश्यकता होगी। सबसे पहले, आपको जेम इंस्टॉल करना होगा। आप इसे अपने जेमफाइल में जोड़कर और बंडल इंस्टॉल चलाकर कर सकते हैं: gem 'pry'
या, आप इसे मैन्युअली इंस्टॉल कर सकते हैं: gem install pry
आपको यह भी सुनिश्चित करना होगा कि आपका कोड Pry की उम्मीद कर रहा है, इसलिए अपनी फ़ाइल में यह लाइन रखें:
require 'pry'
और बस! आप Pry के साथ तैयार और चालू हैं!