बहुत से लोग भूल जाते हैं कि रूबी ऐसे काम कर सकती है जो वेब एप्लिकेशन नहीं हैं। इस लेख में, मैं आपको दिखाना चाहता हूं कि इसका समाधान करने में मदद के लिए एक कमांड-लाइन एप्लिकेशन कैसे बनाया जाए!
यहां कुछ कमांड-लाइन एप्लिकेशन दिए गए हैं जिनसे आप परिचित हो सकते हैं:
psqlrailsbundlergemgit
कमांड-लाइन एप्लिकेशन बनाने के कई तरीके हैं और इस लेख में हम उनमें से तीन पर ध्यान केंद्रित करने जा रहे हैं।
आप इसके बारे में जानने जा रहे हैं :
- एआरजीवी सरणी
- ऑप्टपार्स लाइब्रेरी
- द थोर रत्न
आइए शुरू करें!
रूबी एआरजीवी कॉन्स्टेंट
कमांड-लाइन एप्लिकेशन आमतौर पर कई विकल्प या 'झंडे' लेते हैं।
उदाहरण के लिए :
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 newrails generaterails 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 प्रकार के व्यक्ति हों, कमांड-लाइन एप्लिकेशन बहुत शक्तिशाली और बनाने में मज़ेदार हो सकते हैं।
इसे आज़माएं और आज ही अपना निर्माण शुरू करें 🙂