बहुत से लोग भूल जाते हैं कि रूबी ऐसे काम कर सकती है जो वेब एप्लिकेशन नहीं हैं। इस लेख में, मैं आपको दिखाना चाहता हूं कि इसका समाधान करने में मदद के लिए एक कमांड-लाइन एप्लिकेशन कैसे बनाया जाए!
यहां कुछ कमांड-लाइन एप्लिकेशन दिए गए हैं जिनसे आप परिचित हो सकते हैं:
psql
rails
bundler
gem
git
कमांड-लाइन एप्लिकेशन बनाने के कई तरीके हैं और इस लेख में हम उनमें से तीन पर ध्यान केंद्रित करने जा रहे हैं।
आप इसके बारे में जानने जा रहे हैं :
- एआरजीवी सरणी
- ऑप्टपार्स लाइब्रेरी
- द थोर रत्न
आइए शुरू करें!
रूबी एआरजीवी कॉन्स्टेंट
कमांड-लाइन एप्लिकेशन आमतौर पर कई विकल्प या 'झंडे' लेते हैं।
उदाहरण के लिए :
psql --help
आप रूबी में इन विकल्पों को कैसे एक्सेस कर सकते हैं?
ARGV
का उपयोग करना सरणी।
यदि आपके पास argv.rb
. नामक फ़ाइल में निम्न कोड है :
p ARGV
और यदि आप ruby argv.rb test abc 1 2 3
. का उपयोग करके इस कोड को चलाते हैं , आपको यह मिलेगा:
["test", "abc", "1", "2", "3"]
यह सभी विकल्पों के साथ एक सरणी है!
आप एक विकल्प पार्सर को लागू करके जांच सकते हैं कि कोई विशिष्ट विकल्प पारित किया गया है या नहीं।
यहां एक उदाहरण दिया गया है :
def process_argv(option) case option when "-h" puts "This is the help menu." puts " -v Enable verbose mode" puts " -c Enable syntax highlighting" exit when "-v" @options[:verbose] = true when "-c" @options[:syntax_highlighting] = true end end @options = {} ARGV.each { |option| process_argv(option) } p @options
यदि आप इसे इस तरह चलाते हैं :
ruby argv.rb -v -c
आप देखेंगे :
{:verbose=>true, :syntax_highlighting=>true}
यह साधारण चीजों के लिए काम करता है, लेकिन यदि आप एक बड़ा एप्लिकेशन लिखना चाहते हैं तो आप अन्य समाधानों पर विचार कर सकते हैं।
विकल्प पार्सर लाइब्रेरी का उपयोग कैसे करें
रूबी के साथ आता है OptionParser
क्लास जिसे आप कमांड-लाइन विकल्पों को पार्स करने के लिए उपयोग कर सकते हैं।
यहां एक उदाहरण दिया गया है :
require 'optparse' @options = {} OptionParser.new do |opts| opts.on("-v", "--verbose", "Show extra information") do @options[:verbose] = true end opts.on("-c", "--color", "Enable syntax highlighting") do @options[:syntax_highlighting] = true end end.parse! p @options
optparse
. का उपयोग करने पर आपको कई लाभ मिलते हैं अपने स्वयं के कस्टम समाधान पर।
उदाहरण के लिए :
- आपके पास संक्षिप्त
-v
हो सकता है और लंबा संस्करण--verbose
बिना अतिरिक्त काम के हर झंडे का - हर विकल्प का एक विवरण होता है, जो सहायता मेनू का हिस्सा होगा
- सहायता मेनू आपके लिए स्वचालित रूप से बनाया गया है, इसलिए हर बार जब आप विकल्प जोड़ते या हटाते हैं तो आपको इसे मैन्युअल रूप से अपडेट करने की आवश्यकता नहीं होती है
यहां बताया गया है कि मेनू कैसा दिखता है :
सबसे अच्छा हिस्सा?
यह सब रूबी में बनाया गया है इसलिए इंस्टॉल करने के लिए कुछ भी नहीं है!
The Thor Gem का उपयोग कैसे करें
यदि आप विकल्प पार्सिंग के लिए एक अलग दृष्टिकोण की तलाश में हैं तो आपको थोर मणि पर एक नज़र डालना चाहिए। रेल यही उपयोग करता है।
रेल में आप कुछ ऐसा करते हैं जैसे :
rails new
rails generate
rails console
(आंशिक रूप से) rails
को फिर से बनाने के लिए आदेश आप कुछ इस तरह कर सकते हैं:
require 'thor' class RailsCLI < Thor class_option :verbose, :type => :boolean, :aliases => "-v" desc "new DIRECTORY", "Create a new rails app" def new # ... end desc "generate THING PARAMETERS", "Generate controller / model / migration" def generate # ... end desc "console", "Start a rails console" def console # ... end end RailsCLI.start(ARGV)
सहायता मेनू इस तरह दिखता है :
यह OptionParser
. की तुलना में बहुत अलग शैली है …
...और यह आपके ऐप के लिए सबसे अच्छा विकल्प नहीं हो सकता है यदि यह कुछ परिवर्तनशील विकल्पों के साथ एक काम करता है।
लेकिन अगर आपके पास rails
. जैसा कमांड है , जिसका उपयोग कई अलग-अलग कार्यों के लिए किया जाता है, तो थोर एक बढ़िया विकल्प है!
रूबी रीडलाइन लाइब्रेरी
क्या आप pry
. जैसे इंटरैक्टिव इंटरफ़ेस के साथ एक एप्लिकेशन बनाना चाहते हैं? या psql
?
Readline
देखें मॉड्यूल, जो आपको ऐसा करने में मदद करता है।
यहां एक उदाहरण दिया गया है :
prompt = "> " while buf = Readline.readline(prompt, true) puts "Your input was: '#{buf}'" end
यह आपको एक संकेत देगा, और एंटर दबाने के बाद आप जो कुछ भी लिखते हैं उसे वापस प्रतिध्वनित करें।
आप CTRL+C
. दबाकर प्रोग्राम को खत्म कर सकते हैं ।
रीडलाइन आपके द्वारा लिखी गई हर चीज का इतिहास रखेगी, और यह आपको ctrl+r
का उपयोग करके अपना इतिहास खोजने की अनुमति देगी। , या Readline::HISTORY.to_a
आपके कोड के अंदर।
Readline
के साथ आप स्वत:पूर्णता जैसी चीजों को भी लागू कर सकते हैं, उदाहरण के लिए इस लिंक पर एक नज़र डालें।
वीडियो ट्यूटोरियल देखें
निष्कर्ष
भले ही आप GUI प्रकार के व्यक्ति हों, कमांड-लाइन एप्लिकेशन बहुत शक्तिशाली और बनाने में मज़ेदार हो सकते हैं।
इसे आज़माएं और आज ही अपना निर्माण शुरू करें 🙂