रूबी स्टैंडर्ड लाइब्रेरी मॉड्यूल और कक्षाओं की एक श्रृंखला है जो रूबी के साथ आती है लेकिन स्वयं भाषा का हिस्सा नहीं है।
ये कक्षाएं विभिन्न प्रकार की सुविधाएं प्रदान करती हैं जैसे:
- बेस64 एन्कोडिंग
- प्राइम नंबर जेनरेशन
- डीएनएस संकल्प
इस लेख में मैं आपको इनमें से 5 कक्षाओं को उपयोगी उदाहरणों के साथ दिखाने जा रहा हूँ।
रूबी लॉगर क्लास
यदि आपको कुछ त्रुटि या डीबग संदेश लॉग करने की आवश्यकता है, तो रूबी ने आपको लकड़हारा
. के साथ कवर किया है कक्षा।
यह वर्ग आपको लॉगिंग शुरू करने के लिए आवश्यक सब कुछ प्रदान करता है!
लॉगर
का उपयोग करने के लिए वर्ग आप बस एक लकड़हारा
बना सकते हैं ऑब्जेक्ट और इसे पैरामीटर के रूप में आउटपुट स्ट्रीम (या फ़ाइल नाम) दें। फिर आप अपना संदेश पंजीकृत करने के लिए विभिन्न लॉगिंग स्तरों का उपयोग कर सकते हैं।
लॉगिंग स्तर हैं:
- डीबग
- जानकारी
- चेतावनी
- त्रुटि
- घातक
उदाहरण :
require 'logger' logger = Logger.new(STDOUT) logger.info 'testing...' logger.warn 'fun with Ruby :)'
यह निम्न आउटपुट उत्पन्न करता है :
I, [2016-05-14T15:50:21.367590 #12148] INFO -- : testing... W, [2016-05-14T15:50:21.846651 #12148] WARN -- : fun with Ruby 🙂
पहला वर्ण लॉगिंग स्तर का संक्षिप्त रूप है (I for Info, W for Warn)… फिर आपके पास एक टाइमस्टैम्प, और वर्तमान प्रोसेस आईडी है (जिसे आप Process.pid
का उपयोग करके रूबी में प्राप्त कर सकते हैं) )।
अंत में, आपके पास पूर्ण लॉगिंग स्तर और वास्तविक संदेश है।
आप एक नया फॉर्मेटर प्रदान करके इस प्रारूप को बदल सकते हैं।
प्राइम नंबरों के साथ काम करना
हो सकता है कि आपको दिन-प्रतिदिन के आधार पर अभाज्य संख्याओं से निपटने की आवश्यकता न हो, लेकिन यह जानना अभी भी अच्छा है (विशेषकर यदि आपको प्रोग्रामिंग चुनौतियाँ पसंद हैं) कि रूबी के पास प्राइमकोड के माध्यम से उनके लिए अच्छा समर्थन है।> कक्षा।
जब आपको Prime
require की आवश्यकता हो यह प्राइम?
. जोड़ देगा Fixnum
. की विधि ।
उदाहरण :
require 'prime' 5.prime? # true 11.prime? # true 20.prime? # false
इस वर्ग में एक अभाज्य संख्या जनरेटर भी शामिल है।
उदाहरण :
Prime.take(10) # [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
स्ट्रिंगियो क्लास का उपयोग कैसे करें
स्ट्रिंगियो
वर्ग आपको एक स्ट्रिंग बनाने की अनुमति देता है जो IO
. की तरह व्यवहार करता है वस्तु।
इसका मतलब है कि आप इस स्ट्रिंग के साथ काम कर सकते हैं जैसे कि आप किसी फ़ाइल से पढ़ रहे थे या STDIN
(मानक इनपुट)।
यहां एक उदाहरण दिया गया है :
require 'stringio' io = StringIO.new io << 'test' io << 'code' puts io.string # "testcode"
कुछ बातों पर ध्यान दें :
जब आप अपने StringIO
. में डेटा जोड़ते हैं ऑब्जेक्ट यह आपके लिए रिक्त स्थान या न्यूलाइन नहीं जोड़ेगा, और वास्तविक स्ट्रिंग प्राप्त करने के लिए आपको string
को कॉल करने की आवश्यकता है विधि।
इसके अलावा, आप अलग-अलग वर्णों तक पहुँचने के लिए सरणी अनुक्रमण का उपयोग नहीं कर सकते, जैसे आप नियमित स्ट्रिंग के साथ कर सकते हैं।
यह कब उपयोगी है?
ठीक है, कभी-कभी आप किसी फ़ाइल या किसी अन्य IO ऑब्जेक्ट को किसी अन्य ऑब्जेक्ट के लिए प्रतिस्थापित करना चाह सकते हैं जिस पर आपका अधिक नियंत्रण है। उदाहरण के लिए, एक परीक्षण वातावरण में आप STDOUT
. को बदल सकते हैं एक StringIO
. के साथ वस्तु।
आप यहां रेल से वास्तविक दुनिया का उदाहरण देख सकते हैं:https://github.com/rails/rails/blob/52ce6ece8c8f74064bb64e0a0b1ddd83092718e1/activesupport/test/logger_test.rb
एन्कोडिंग और डिकोडिंग बेस64
बेस 64 एक एन्कोडिंग प्रारूप है जो इंटरनेट पर आम है।
ऐसा दिखता है :
"cnVieQ=="
यह क्यों उपयोगी है?
URL में वर्णों का एक प्रतिबंधित सेट होता है, कभी-कभी आप उन्हें शामिल करना चाहते हैं और बेस 64 इसे संभव बनाता है।
एन्कोड करने का तरीका यहां दिया गया है:
require 'base64' Base64.encode64("ruby") "cnVieQ=="की आवश्यकता है
डिकोड करने का तरीका यहां दिया गया है:
require 'base64' Base64.decode64("cnVieQ==") "ruby"की आवश्यकता है
पथों के साथ कार्य करना
पथनाम
क्लास कई फाइल-सिस्टम एक्सप्लोरिंग यूटिलिटीज को लपेटता है, जैसे Dir
और फ़ाइल
, अधिक शक्तिशाली वर्ग में।
जबकि विधि के नाम समान हैं, वे Pathname
return लौटाते हैं तार या सरणियों के बजाय वस्तुओं। और इसका मतलब यह है कि आप सभी फ़ाइल-संबंधित विधियों के साथ परिणामों के साथ काम करना जारी रख सकते हैं।
यह एक बेहतरीन उदाहरण है :
require 'pathname' Pathname.glob("*").count(&:directory?)की आवश्यकता है
यदि आपने Dir
. के साथ ऐसा करने का प्रयास किया है , आपको इस कोड का उपयोग करना होगा, जो उतना सुंदर नहीं है।
Dir.glob("*").count { |d| File.directory?(d) }
अगली बार जब आपको फ़ाइल-सिस्टम से संबंधित कार्य करने की आवश्यकता हो, तो इसे आज़माएं
निष्कर्ष
मुझे आशा है कि आपको ये उदाहरण उपयोगी लगे होंगे! मानक लाइब्रेरी को थोड़ा और एक्सप्लोर करना सुनिश्चित करें ताकि आप जान सकें कि यह आपके लिए क्या कर सकता है।
अगर आपको यह पोस्ट पसंद आई हो तो इसे शेयर करना न भूलें 🙂