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

बायबग, रेल और पाउ ​​के साथ रिमोट डिबगिंग

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

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

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

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

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 लाइब्रेरी में हाल के वर्षों में विस्फोट हुआ है और 2021 में Tailwind इस पैक में सबसे आगे है। हालांकि रेल टेलविंड आउट ऑफ बॉक्स के साथ नहीं आ

  1. Vue, Vuex और Rails के साथ एक पूर्ण-स्टैक एप्लिकेशन का निर्माण

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

  1. रेल के साथ कोणीय का उपयोग करना 5

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