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

सबसे अच्छा हिस्सा?
यह सब रूबी में बिल्ट-इन है इसलिए इंस्टॉल करने के लिए कुछ भी नहीं है!
Thor जेम का उपयोग कैसे करें
यदि आप विकल्प पार्सिंग के लिए एक अलग दृष्टिकोण ढूंढ रहे हैं तो आपको Thor जेम पर एक नज़र डालनी चाहिए। यह वही है जो Rails उपयोग करता है।
Rails में आप ऐसा करते हैं:
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 जैसी कमांड है, जिसका उपयोग कई अलग-अलग कार्यों के लिए किया जाता है, तो Thor एक बढ़िया विकल्प है!
रूबी Readline लाइब्रेरी
क्या आप pry या psql की तरह इंटरैक्टिव इंटरफेस वाला एप्लिकेशन बनाना चाहेंगे?
Readline मॉड्यूल देखें, जो आपको ऐसा करने में मदद करता है।
यहाँ एक उदाहरण है:
prompt = "> "
while buf = Readline.readline(prompt, true)
puts "Your input was: '#{buf}'"
end
यह आपको एक प्रॉम्प्ट देगा, और आपके द्वारा एंटर दबाने के बाद आप जो भी लिखते हैं उसे वापस इको करेगा।
आप CTRL+C दबाकर प्रोग्राम को समाप्त कर सकते हैं।
Readline आपके द्वारा टाइप की गई हर चीज़ का इतिहास रखेगा, और यह आपको ctrl+r का उपयोग करके अपने इतिहास को खोजने की अनुमति देगा, या आपके कोड के अंदर Readline::HISTORY.to_a।
Readline के साथ आप ऑटो-कंप्लीशन जैसी चीजों को भी लागू कर सकते हैं, उदाहरण के लिए इस लिंक पर एक नज़र डालें।
वीडियो ट्यूटोरियल देखें
निष्कर्ष
भले ही आप GUI किस्म के व्यक्ति हों, कमांड-लाइन एप्लिकेशन बहुत शक्तिशाली और बनाने में मजेदार हो सकते हैं।
इसे आज़माएं और आज ही अपना खुद का बनाना शुरू करें 🙂