Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

शक्तिशाली रूबी CLI टूल्स बनाएं: चरण-दर-चरण गाइड

बहुत से लोग भूल जाते हैं कि रूबी वेब एप्लिकेशन के अलावा भी चीजें कर सकता है। इस लेख में, मैं आपको दिखाना चाहता हूं कि इस कमी को दूर करने के लिए कमांड-लाइन एप्लिकेशन कैसे बनाया जाए!

यहाँ कुछ कमांड-लाइन एप्लिकेशन हैं जिनसे आप परिचित हो सकते हैं:

  • psql
  • rails
  • bundler
  • gem
  • git

कमांड-लाइन एप्लिकेशन बनाने के कई तरीके हैं और इस लेख में हम उनमें से तीन पर ध्यान केंद्रित करने जा रहे हैं।

आप सीखने जा रहे हैं:

  • 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 बिना अतिरिक्त काम के रख सकते हैं
  • हर विकल्प का विवरण होता है, जो हेल्प मेनू का हिस्सा होगा
  • हेल्प मेनू स्वचालित रूप से आपके लिए बनाया जाता है, इसलिए आपको हर बार विकल्प जोड़ने या हटाने पर इसे मैन्युअली अपडेट नहीं करना पड़ता

मेनू ऐसा दिखता है:

शक्तिशाली रूबी CLI टूल्स बनाएं: चरण-दर-चरण गाइड

सबसे अच्छा हिस्सा?

यह सब रूबी में बिल्ट-इन है इसलिए इंस्टॉल करने के लिए कुछ भी नहीं है!

Thor जेम का उपयोग कैसे करें

यदि आप विकल्प पार्सिंग के लिए एक अलग दृष्टिकोण ढूंढ रहे हैं तो आपको Thor जेम पर एक नज़र डालनी चाहिए। यह वही है जो Rails उपयोग करता है।

Rails में आप ऐसा करते हैं:

  • 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)

हेल्प मेनू ऐसा दिखता है:

शक्तिशाली रूबी CLI टूल्स बनाएं: चरण-दर-चरण गाइड

यह 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 किस्म के व्यक्ति हों, कमांड-लाइन एप्लिकेशन बहुत शक्तिशाली और बनाने में मजेदार हो सकते हैं।

इसे आज़माएं और आज ही अपना खुद का बनाना शुरू करें 🙂

  1. रूबी में फाइलें कैसे पढ़ें और लिखें: एक चरण-दर-चरण गाइड रूबी में फाइलें कैसे पढ़ें और लिखें: एक चरण-दर-चरण गाइड

    आज आप सीखेंगे कि रूबी में फाइलें कैसे पढ़ें और लिखें ताकि आप सामग्री निकाल सकें, नई फाइलें बना सकें, और वह जानकारी ढूंढ सकें जिसकी आपको आवश्यकता है! यहां हम क्या कवर करने जा रहे हैं: विषयसूची1 रूबी में फाइलें कैसे पढ़ें2 रूबी में फाइल में कैसे लिखें3 रूबी फाइल मेथड्स4 डायरेक्टरी ऑपरेशन्स5 FileUtils

  1. रूबी पार्सिंग में मास्टर करें: स्क्रैच से अपना खुद का पार्सर बनाएं रूबी पार्सिंग में मास्टर करें: स्क्रैच से अपना खुद का पार्सर बनाएं

    पार्सिंग स्ट्रिंग्स के एक समूह को समझने और उन्हें किसी ऐसी चीज़ में बदलने की कला है जिसे हम समझ सकें। आप रेगुलर एक्सप्रेशन्स का उपयोग कर सकते हैं, लेकिन वे हमेशा इस काम के लिए उपयुक्त नहीं होते। उदाहरण के लिए, यह सामान्य ज्ञान है कि HTML को रेगुलर एक्सप्रेशन्स से पार्स करना शायद एक अच्छा विचार नहीं

  1. SwiftUI के साथ एक मजबूत डिजाइन सिस्टम बनाना: एक पूर्ण गाइड SwiftUI के साथ एक मजबूत डिजाइन सिस्टम बनाना: एक पूर्ण गाइड

    एक उत्पाद का समर्थन करने के लिए एक डिजाइन सिस्टम बनाना आसान नहीं है - इसे स्केलेबिलिटी के लिए मजबूत और लचीला दोनों होना चाहिए। हालांकि चुनौतीपूर्ण, बहुत सारे बेहतरीन संसाधनों ने उपयोगी सिद्धांतों और दृष्टिकोणों को साझा किया है जो टीमों को विजुअल और प्रोग्रामेटिक दोनों रूप से एक अच्छा सिस्टम बनाने मे