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

बाईबग और पाउ के साथ रेल्स में रिमोट डीबगिंग: एक चरण-दर-चरण गाइड

यदि आपने पहले बाईबग नहीं देखा है, तो मैं सुझाव देता हूँ कि आप इसे देखें। यह रूबी 2.x के लिए एक बेहतरीन डीबगर है। इसके लेखकों के शब्दों में:

बाईबग रूबी 2 के लिए उपयोग में सरल, सुविधा संपन्न डीबगर है। यह निष्पादन नियंत्रण के लिए नए TracePoint API और कॉल स्टैक नेविगेशन के लिए नए डिबग इंस्पेक्टर API का उपयोग करता है, इसलिए यह आंतरिक कोर स्रोतों पर निर्भर नहीं करता। इसे C एक्सटेंशन के रूप में विकसित किया गया है, इसलिए यह तेज़ है। और इसका एक पूर्ण टेस्ट सूट है इसलिए यह विश्वसनीय है।

बुनियादी सेटअप बहुत सरल है। बस जेम इंस्टॉल करें। यदि आप अपने कोड में कहीं भी byebug मेथड का उपयोग करते हैं, तो निष्पादन उस बिंदु पर रुक जाएगा और आपको एक डीबग कंसोल में डाल दिया जाएगा। आप इसे प्राई का उपयोग करने के लिए भी सेट कर सकते हैं।

उदाहरण के लिए, मैं डीबगर को इस तरह लागू कर सकता हूँ:

require 'byebug' def my_method a = 1 byebug end my_method() 

यदि मैं उस फाइल को चलाता हूँ, तो मुझे डीबगर में डाल दिया जाता है।

बाईबग और पाउ के साथ रेल्स में रिमोट डीबगिंग: एक चरण-दर-चरण गाइड जब डीबगर ट्रिगर होता है, तो यह आपको एक इंटरैक्टिव शेल में डाल देता है।

पाउ के साथ समस्या

यह ठीक है अगर आप अपना ऐप कमांड लाइन पर चला सकते हैं। लेकिन क्या होगा अगर आप पाउ का उपयोग करके स्थानीय रूप से सेवा देने वाला एक रेल्स ऐप विकसित कर रहे हैं?

पाउ, अधिकांश ऐप सर्वर की तरह, बैकग्राउंड में चलता है। इसलिए भले ही आप निष्पादन को रोकने और डीबगर चलाने में कामयाब हो जाएं, आप इसके साथ इंटरैक्ट नहीं कर पाएंगे!

सौभाग्य से, बाईबग रिमोट डीबगिंग के लिए एक तंत्र प्रदान करता है।

यदि आप रिमोट डीबगिंग से परिचित नहीं हैं, तो यह एक सरल अवधारणा है। जब बाईबग मेथड को कॉल किया जाता है, तो आपको इंटरैक्टिव शेल में डालने के बजाय, डीबगर अपना स्वयं का विशेष सर्वर शुरू करता है। आप फिर कमांड-लाइन क्लाइंट का उपयोग करके इस डीबग सर्वर से कनेक्ट कर सकते हैं।

रिमोट डीबगिंग कैसी दिखती है?

सबसे पहले, मैं एक कंट्रोलर एक्शन में बाईबग मेथड को कॉल करता हूँ

class PagesController < ApplicationController def index if user_has_never_signed_in? && request.subdomain == "www" @hero_bg = ab_test("hero_bg", "control", "variable") else @hero_bg = "control" end byebug end end 

दूसरा, मैं उस एक्शन पर एक अनुरोध करता हूँ। कनेक्शन लटका हुआ प्रतीत होता है।

बाईबग और पाउ के साथ रेल्स में रिमोट डीबगिंग: एक चरण-दर-चरण गाइड एक वेब अनुरोध जो डीबगर को ट्रिगर करता है लोड नहीं होता

अंत में, मैं अपने बाईबग क्लाइंट पर स्विच करता हूँ, जो ठीक उसी बिंदु पर एक डीबगर कंसोल दिखा रहा है जिसे मैंने निर्दिष्ट किया था।

बाईबग और पाउ के साथ रेल्स में रिमोट डीबगिंग: एक चरण-दर-चरण गाइड बाईबग रिमोट डीबगर एक्शन में

बाईबग के साथ रिमोट डीबगिंग सेट अप करना

यदि आपके पास पहले से जेम इंस्टॉल नहीं है, तो आगे बढ़ें और इसे इंस्टॉल करें।

# Gemfile gem "byebug", group: "development" 

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

एक बार जब आप यह इनिशियलाइज़र जोड़ लेते हैं, तो आपको शायद ऐप को रीस्टार्ट करना होगा ताकि यह सुनिश्चित हो सके कि यह लोड हो गया है।

# config/initializers/byebug.rb if Rails.env.development? Byebug.start_server 'localhost', ENV.fetch("BYEBUG_SERVER_PORT", 1048).to_i end 

अंत में, आपको बाईबग क्लाइंट चलाना होगा और उसे बताना होगा कि हमारा सर्वर कहां मिलेगा। क्लाइंट तब बैठकर डीबग ट्रिगर होने की प्रतीक्षा करेगा।

यदि आपने एक अलग पोर्ट का उपयोग किया है, तो आपको उसे यहां प्रतिस्थापित करना होगा।

bundle exec byebug -R localhost:1048 

बस! डीबगिंग शुरू करने का समय।


  1. रूबी ऑन रेल्स में टेलविंड CSS जोड़ें: एक व्यावहारिक चरण-दर-चरण गाइड रूबी ऑन रेल्स में टेलविंड CSS जोड़ें: एक व्यावहारिक चरण-दर-चरण गाइड

    CSS जादुई है लेकिन समय लेने वाला। सुंदर, कार्यात्मक, और सुलभ साइट्स उपयोग करने में आनंददायक हैं, लेकिन अपना खुद का CSS लिखना थकाऊ है। कई CSS लाइब्रेरी, जैसे बूटस्ट्रैप, हाल के वर्षों में विस्फोट हुए हैं, और टेलविंड 2021 में पैक का नेतृत्व कर रहा है। हालांकि रेल्स टेलविंड के साथ बॉक्स से बाहर नहीं आ

  1. Vue, Vuex, और रेल्स के साथ फुल-स्टैक डेवलपमेंट में महारत: एक स्केलेबल दृष्टिकोण Vue, Vuex, और रेल्स के साथ फुल-स्टैक डेवलपमेंट में महारत: एक स्केलेबल दृष्टिकोण

    स्केलेबिलिटी को ध्यान में रखते हुए फुल-स्टैक एप्लिकेशन बनाना डराने वाला हो सकता है, खासकर जब Vue और Vuex के नवीनतम संस्करण के साथ निर्माण किया जा रहा हो, जिसमें पूर्ण टाइपस्क्रिप्ट समर्थन है। यह लेख अपने पाठकों को Vuex 4.0 के साथ स्टेट मैनेजमेंट से लेकर API अनुरोधों और डेटाबेस इंटरैक्शन को संभालने त

  1. Angular को Rails 5 के साथ इंटीग्रेट करना: एक सहज फुल-स्टैक दृष्टिकोण Angular को Rails 5 के साथ इंटीग्रेट करना: एक सहज फुल-स्टैक दृष्टिकोण

    आपने पहले कहानी सुनी है। आपके पास पहले से ही एक एप्लिकेशन है जो आपके विकेंद्रीकृत और पूरी तरह से काम करने वाले बैक-एंड APIs और किसी सामान्य टूलसेट के साथ बने फ्रंट-एंड पर चल रहा है। अब, आप Angular पर आगे बढ़ना चाहते हैं। या, शायद आप बस अपने रेल्स प्रोजेक्ट्स के साथ Angular को इंटीग्रेट करने का एक तर