Ruby Academy · पाठ

Code लिखना

एक gem को व्यवस्थित करना

पाठ 2, कुल 4 में से13 चरण

Code लिखना, CoddyKit पर Ruby Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Ruby Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Ruby Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

जेम के कोड को व्यवस्थित करना

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

  • प्रत्येक जेम के लिए एक नाम-स्थान मॉड्यूल।
  • प्रत्येक क्लास के लिए एक फ़ाइल, जो नाम-स्थान की संरचना से मेल खाती हो।
  • एक छोटा सार्वजनिक इंटरफ़ेस।

नाम-स्थान मॉड्यूल

सभी क्लास को अपने जेम के नाम वाले मॉड्यूल के अंदर रखें। इससे आपका Client, किसी अन्य व्यक्ति के Client से नहीं टकराएगा।

module Greeter
  class Hello
    def message
      "Hi there"
    end
  end
end

puts Greeter::Hello.new.message

फ़ाइल नामकरण की परंपरा

Ruby के टूल में फ़ाइल पथों का स्थिरांक नामों से मेल खाना अपेक्षित होता है:

  • Greeter lib/greeter.rb में रहता है।
  • Greeter::Hello lib/greeter/hello.rb में रहता है।

यह परंपरा स्वचालित लोडर को फ़ाइलें अपने-आप ढूँढने देती है।

आंतरिक फ़ाइलों को आवश्यक करना

प्रवेश फ़ाइल require_relative के माध्यम से सब कुछ जोड़ती है। प्रत्येक क्लास फ़ाइल को एक बार आवश्यक किया जाता है, इसलिए पूरी लाइब्रेरी एक ही require 'greeter' से लोड हो जाती है।

स्पष्ट सार्वजनिक इंटरफ़ेस

विधियों का छोटा-सा समूह उपलब्ध कराएँ, जिन्हें उपयोगकर्ता वास्तव में बुलाते हैं। एक सामान्य तरीका यह है कि मॉड्यूल-स्तरीय सुविधा-विधियाँ बनाई जाएँ, जो आंतरिक क्लास को काम सौंपें।

module Greeter
  def self.say(name)
    "Hello, " + name + "!"
  end
end

puts Greeter.say("Ada")

आंतरिक हिस्से छिपाना

सहायक विधियों को private चिह्नित करें, ताकि वे आपके सार्वजनिक अनुबंध का हिस्सा न बनें। जो कुछ भी सार्वजनिक होता है, वह उपयोगकर्ताओं से किया गया वादा होता है; इसलिए इस इंटरफ़ेस को जानबूझकर छोटा रखें।

class Calculator
  def total(a, b)
    add(a, b)
  end

  private

  def add(x, y)
    x + y
  end
end

puts Calculator.new.total(2, 3)

विन्यास का तरीका

कई जेम एक कॉन्फ़िगरेशन ब्लॉक देते हैं, ताकि उपयोगकर्ता विकल्पों को एक बार में सेट कर सकें। एक सरल संस्करण सेटिंग्स को कॉन्फ़िगरेशन ऑब्जेक्ट में रखता है।

module App
  class Config
    attr_accessor :api_key
  end

  def self.config
    @config ||= Config.new
  end

  def self.configure
    yield(config)
  end
end

App.configure { |c| c.api_key = "secret" }
puts App.config.api_key

कस्टम त्रुटियाँ

अपने नाम-स्थान के अंदर जेम-विशिष्ट त्रुटि क्लास परिभाषित करें, ताकि उपयोगकर्ता केवल आपकी त्रुटियों को पकड़ सकें। StandardError से विरासत लें।

module Payment
  class Error < StandardError; end
  class DeclinedError < Error; end
end

begin
  raise Payment::DeclinedError, "card declined"
rescue Payment::Error => e
  puts "Handled: " + e.message
end

मूल क्लास में अनधिकृत बदलाव से बचें

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

निर्भरताएँ कम रखें

आप जो भी रनटाइम निर्भरता जोड़ते हैं, वह आपके सभी उपयोगकर्ताओं के लिए एक निर्भरता बन जाती है। जहाँ उचित हो, वहाँ मानक लाइब्रेरी को प्राथमिकता दें और केवल तभी कोई जेम जोड़ें, जब उसका लाभ उसके भार के योग्य हो।

कम निर्भरताओं का अर्थ है कम संस्करण टकराव और तेज़ स्थापनाएँ।

सार्वजनिक इंटरफ़ेस का दस्तावेज़ीकरण करें

प्रत्येक सार्वजनिक विधि के आर्ग्युमेंट और लौटाए गए मान का वर्णन करने वाली टिप्पणियाँ जोड़ें। YARD जैसे टूल इन्हें ब्राउज़ किए जा सकने वाले दस्तावेज़ों में बदल देते हैं, और उदाहरणों वाला अच्छा README अक्सर यह तय करता है कि लोग आपके जेम को अपनाएँगे या नहीं।

त्वरित जाँच

जेम के कोड को व्यवस्थित करने के बारे में अपनी समझ की जाँच करें।

पुनरावलोकन: कोड लिखना

आपने जेम के आंतरिक हिस्सों को व्यवस्थित करना सीखा:

  • हर चीज़ को नाम-स्थान मॉड्यूल के अंदर रखें।
  • फ़ाइल पथों को स्थिरांक नामों से मिलाएँ।
  • सार्वजनिक इंटरफ़ेस छोटा रखें और सहायक विधियों को private चिह्नित करें।
  • कस्टम त्रुटि क्लास परिभाषित करें और वैश्विक मंकी पैचिंग से बचें।
  • निर्भरताएँ कम रखें और इंटरफ़ेस का दस्तावेज़ीकरण करें।

अब हम परीक्षण और संस्करण निर्धारण जोड़ेंगे।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Ruby सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
29
पाठ
109

अक्सर पूछे जाने वाले प्रश्न

क्या “Code लिखना” पाठ निःशुल्क है?

हाँ — Ruby Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Code लिखना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Ruby Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Code लिखना” में मैं क्या सीखूँगा?

एक gem को व्यवस्थित करना आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Ruby Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Ruby Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Ruby Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“Code लिखना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Ruby Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Ruby Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Gem Structure
  2. Code लिखना
  3. Testing और Versioning
  4. RubyGems पर प्रकाशित करना
← Ruby Academy पर वापस जाएँ