12 पॉइंट द्वारा GN⁺ 2024-06-24 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • Ruby को अक्सर Rails framework के साथ ही जोड़ा जाता है, इसलिए इस भाषा की असली खूबियों को कई बार नज़रअंदाज़ कर दिया जाता है
  • Ruby एक बहुत समृद्ध और परिपक्व भाषा है, और खासकर जटिल shell script लिखने में उपयोगी है
  • इस लेख का उद्देश्य
    • shell script लिखते समय काम आने वाली Ruby की सुविधाएँ दिखाना, और Bash तथा Python से तुलना करना
    • Bash script को पूरी तरह Ruby script से बदल देना इसका उद्देश्य नहीं है

सुविधा 1: बाहरी command चलाना

  • Ruby में बाहरी command चलाने के लिए backtick(```) का उपयोग किया जाता है.
  • उदाहरण के लिए, backtick का उपयोग करके बाहरी command का output किसी variable में रखा जा सकता है.
  • system या popen का भी उपयोग किया जा सकता है.
    `ls`  
    
  • command का output variable में रखा जा सकता है.
    my_date=`date`  
    

सुविधा 2: status code

  • $? variable का उपयोग करके आखिरी command का status code देखा जा सकता है
  • यह Bash से बहुत मिलता-जुलता है
    `true`  
    puts $? # 0  
    `false`  
    puts $? # 1  
    

सुविधा 3: typed language

  • Ruby static typed language नहीं है, लेकिन इसमें types होते हैं.
  • यह एक object-oriented language है, और इसमें हर चीज़ को object माना जाता है.
  • Bash के विपरीत, इसमें string के अलावा दूसरे types भी सुरक्षित रूप से इस्तेमाल किए जा सकते हैं.
    total_lines = `wc -l my_file`.to_i # फ़ाइल की पंक्तियों की संख्या वाला integer  
    half = total_lines.div 2           # integer division  
    puts `head -n #{half} my_file`     # फ़ाइल का आधा हिस्सा प्रिंट करता है  
    

सुविधा 4: functional composition

  • Ruby में map, select (filter), reduce, flat_map जैसे functional operations methods के रूप में उपलब्ध हैं.
  • command output पर map लागू किया जा सकता है.
    puts `ls`.lines.map { |name| name.strip.length } # फ़ाइल नामों की लंबाई प्रिंट करता है  
    

सुविधा 5: regular expression matching

  • Ruby में regular expression एक type है, और regex का उपयोग करने वाले operations built-in हैं.
  • उदाहरण के लिए, मौजूदा git branch का नाम पाने का तरीका:
    current_branch_regex = /^\* (\S+)/  
    output_lines = `git branch`.lines  
    output_lines.each do |line|  
      if line =~ current_branch_regex # string और regular expression match  
        puts $1                       # पहले group का match प्रिंट करता है  
      end  
    end  
    

सुविधा 6: आसान threads

  • Ruby में कई threads को संभालना बहुत आसान है
  • उदाहरण के लिए, कई फ़ाइलों को एक साथ download करते समय यह उपयोगी है
    (1..10).map do |i|                       # 1 से 10 तक दोहराता है  
      Thread.new do  
        `wget http://my_site.com/file_#{i}`  # command के भीतर variable का उपयोग किया जा सकता है  
      end  
    end.each { |thread| thread.join }        # do/end और curly braces का उद्देश्य एक ही है  
    

सुविधा 7: built-in file और directory operations

  • Ruby में सभी file operations File class की methods के रूप में, और directory operations Dir class की methods के रूप में दिए गए हैं.
  • Python के विपरीत, file और directory को एकसमान तरीके से संभाला जा सकता है.
    exists = File.exists? 'My File'           # boolean लौटाने वाली methods '?' पर खत्म होती हैं  
    file_content = File.open('My File').read  
    File.delete 'My File'                     # जब अस्पष्टता न हो तो parentheses वैकल्पिक हैं  
    

निष्कर्ष

  • जटिल shell script को बदलने के लिए Ruby पर विचार करने की सिफारिश की जाती है
  • इसका मतलब यह नहीं है कि Bash को पूरी तरह छोड़ दिया जाए, लेकिन जटिल कामों में Ruby बेहतर विकल्प हो सकता है
  • Python, Perl, JS आदि से भी यह किया जा सकता है, लेकिन व्यक्तिगत रूप से Ruby सबसे अधिक पूर्ण और इस्तेमाल में आसान भाषा लगती है

GN⁺ की राय

  • Ruby object-oriented और functional programming दोनों को सपोर्ट करता है, इसलिए यह अलग-अलग programming styles को अपनाने में सक्षम है.
  • Python की तुलना में Ruby अधिक सख्त object-oriented paradigm का पालन करता है.
  • shell script लिखते समय, जैसे-जैसे जटिलता बढ़ती है, Ruby के फायदे अधिक स्पष्ट होते जाते हैं.
  • Ruby की thread handling क्षमता parallel कामों को आसानी से लागू करने में मदद करती है.
  • file और directory operations सहज और एकसमान तरीके से उपलब्ध हैं, जिससे productivity बढ़ती है.

3 टिप्पणियां

 
yangeok 2024-07-05

स्क्रिप्टिंग के लिए इस्तेमाल करें तो भी ठीक ही लगेगा हाहा कौन-सा version है, यह तो नहीं पता, लेकिन Mac में यह डिफ़ॉल्ट रूप से इंस्टॉल होकर आता है ना,,?!

 
botplaysdice 2024-06-24

एक समय की मेरी प्रिय Ruby... काश यह इस तरह भी(?) बहुत प्यार पाने वाली भाषा बनी रहे।

 
GN⁺ 2024-06-24
Hacker News राय
  • Ruby ने Perl से कई shell scripting फीचर्स विरासत में लिए हैं, और यह readability को धीरे-धीरे बेहतर बनाने के विकल्प देता है.
  • binding.irb या binding.pry का उपयोग करने पर स्क्रिप्ट में interactive debugging किया जा सकता है.
  • Pathname का उपयोग करने पर File की तुलना में अधिक natural API मिलता है.
  • backtick(`) का उपयोग करके सरल shell commands चलाई जा सकती हैं, लेकिन अधिक जटिल कामों के लिए Ruby की standard library का उपयोग किया जा सकता है.
  • Ruby के threads इस्तेमाल में आसान हैं, और Parallel का उपयोग करने पर parallel processing और भी सरल हो जाती है.
  • MacOS में डिफ़ॉल्ट रूप से इंस्टॉल होने वाला Ruby 2.6 उपयोग करने लायक है, लेकिन latest version में upgrade करना बेहतर है.
  • Ruby एक शानदार language है, लेकिन editor support Python की तुलना में कमज़ोर है.
  • shell command चलाने के लिए backtick(`) का उपयोग अप्रभावी है, और OS के अनुसार इसका व्यवहार अलग हो सकता है.
  • Ruby का inline dependency management फीचर बहुत उपयोगी है, और Deno जैसी सुविधा देता है.
  • Ruby सुंदर code लिखना संभव बनाता है और छोटे scripts लिखने के लिए उपयुक्त है.
  • Ruby जटिल automation scripts लिखने में बहुत उपयोगी है, और bash या powershell की तुलना में काम करना आसान बनाता है.
  • Ruby अब भी बड़े Rails monolith इस्तेमाल करने वाली कंपनियों में बहुत से scripts और tools लिखने के लिए उपयोग किया जाता है.
  • ऐसे वातावरण में जहाँ इंटरनेट तक पहुँच नहीं होती, वहाँ बेसिक distribution में इंस्टॉल भाषा का उपयोग करना महत्वपूर्ण है.
  • Ruby shell auto-completion scripts लिखने में उपयोगी है और जल्दी utilities बनाने में मदद करता है. Rails MVP लिखने के लिए उपयुक्त है.