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

रूबी के साथ कमांड-लाइन एप्लिकेशन (सीएलआई) कैसे बनाएं?

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

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

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

इसे आज़माएं और आज ही अपना निर्माण शुरू करें 🙂


  1. रूबी में फाइलें कैसे पढ़ें और लिखें (उदाहरण के साथ)

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

  1. रूबी के साथ एक पार्सर कैसे बनाएं

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

  1. स्विफ्टयूआई के साथ डिजाइन सिस्टम कैसे बनाएं

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