रूबी स्टैंडर्ड लाइब्रेरी मॉड्यूल्स और क्लासेस की एक श्रृंखला है जो रूबी के साथ आती हैं लेकिन भाषा का हिस्सा नहीं हैं।
ये क्लासेस विभिन्न उपयोगिताओं की पेशकश करती हैं जैसे:
- Base64 एन्कोडिंग
- अभाज्य संख्या जनरेशन
- DNS रिज़ॉल्यूशन
इस लेख में मैं आपको इन 5 क्लासेस को उपयोगी उदाहरणों के साथ दिखाने जा रहा हूँ।
रूबी Logger क्लास
यदि आपको कुछ त्रुटि या डीबग संदेश लॉग करने की आवश्यकता है तो रूबी के पास Logger क्लास है जो आपकी मदद करती है।
यह क्लास लॉगिंग शुरू करने के लिए आपको जो कुछ भी चाहिए वह सब प्रदान करती है!
Logger क्लास का उपयोग करने के लिए आप बस एक Logger ऑब्जेक्ट बना सकते हैं और उसे एक आउटपुट स्ट्रीम (या फ़ाइल नाम) पैरामीटर के रूप में दे सकते हैं। फिर आप अपने संदेश को रजिस्टर करने के लिए विभिन्न लॉगिंग स्तरों का उपयोग कर सकते हैं।
लॉगिंग स्तर हैं:
- debug
- info
- warn
- error
- fatal
उदाहरण:
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 Info के लिए, W Warn के लिए)… फिर आपके पास एक टाइमस्टैम्प है, और वर्तमान प्रोसेस आईडी (जिसे आप रूबी में Process.pid का उपयोग करके प्राप्त कर सकते हैं)।
अंत में, आपके पास पूर्ण लॉगिंग स्तर और वास्तविक संदेश है।
आप एक नया फॉर्मेटर प्रदान करके इस प्रारूप को बदल सकते हैं।
अभाज्य संख्याओं के साथ काम करना
शायद आपको दिन-प्रतिदिन के आधार पर अभाज्य संख्याओं से निपटने की आवश्यकता नहीं है, लेकिन यह जानना अभी भी अच्छा है (विशेषकर यदि आप प्रोग्रामिंग चुनौतियों को पसंद करते हैं) कि रूबी में Prime क्लास के माध्यम से उनके लिए अच्छा समर्थन है।
जब आप Prime की आवश्यकता करते हैं तो यह Fixnum में prime? मेथड जोड़ देगा।
उदाहरण:
require 'prime' 5.prime? # true 11.prime? # true 20.prime? # false
इस क्लास में एक अभाज्य संख्या जनरेटर भी शामिल है।
उदाहरण:
Prime.take(10) # [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
StringIO क्लास का उपयोग कैसे करें
StringIO क्लास आपको एक स्ट्रिंग बनाने की अनुमति देती है जो 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
Base64 एन्कोडिंग और डिकोडिंग
Base64 एक एन्कोडिंग प्रारूप है जो इंटरनेट पर आम है।
यह ऐसा दिखता है:
"cnVieQ=="
यह उपयोगी क्यों है?
URLs में अनुमत वर्णों का एक प्रतिबंधित सेट होता है, कभी-कभी आप उनको शामिल करना चाहते हैं और Base64 इसे संभव बनाता है।
एन्कोड करने का तरीका यहां दिया गया है:
require 'base64'
Base64.encode64("ruby") # "cnVieQ=="
डिकोड करने का तरीका यहां दिया गया है:
require 'base64'
Base64.decode64("cnVieQ==") # "ruby"
पथ के साथ काम करना
Pathname क्लास कई फाइल-सिस्टम एक्सप्लोरिंग उपयोगिताओं को लपेटती है, जैसे Dir और File, एक बहुत अधिक शक्तिशाली क्लास में।
जबकि मेथड नाम समान हैं, वे स्ट्रिंग्स या सरणियों के बजाय Pathname ऑब्जेक्ट्स लौटाते हैं। और इसका मतलब है कि आप सभी फाइल-संबंधित मेथड्स के साथ परिणामों पर काम करना जारी रख सकते हैं।
यह एक बेहतरीन उदाहरण है:
require 'pathname'
Pathname.glob("*").count(&:directory?)
यदि आपने इसे Dir के साथ करने की कोशिश की होती, तो आपको इस कोड का उपयोग करना पड़ता, जो उतना सुंदर नहीं है।
Dir.glob("*").count { |d| File.directory?(d) }
अगली बार जब आपको फाइल-सिस्टम से संबंधित कार्य करने की आवश्यकता हो तो इसे आज़माएं 🙂
निष्कर्ष
मुझे आशा है कि आपको ये उदाहरण उपयोगी लगे! स्टैंडर्ड लाइब्रेरी का थोड़ा और पता लगाना सुनिश्चित करें ताकि आप सीख सकें कि यह आपके लिए क्या कर सकता है।
अगर आपको यह पोस्ट पसंद आई तो इसे शेयर करना न भूलें 🙂