কম্পিউটার

রুবি দিয়ে কীভাবে কমান্ড-লাইন অ্যাপ্লিকেশন (সিএলআই) তৈরি করবেন

অনেক লোক ভুলে যায় যে রুবি এমন কিছু করতে পারে যা ওয়েব অ্যাপ্লিকেশন নয়। এই নিবন্ধে, আমি আপনাকে দেখাতে চাই যে কীভাবে একটি কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করতে হয় তার প্রতিকারে সহায়তা করতে!

এখানে কিছু কমান্ড-লাইন অ্যাপ্লিকেশন রয়েছে যার সাথে আপনি পরিচিত হতে পারেন:

  • psql
  • rails
  • bundler
  • gem
  • git

একটি কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করার অনেক উপায় রয়েছে এবং এই নিবন্ধে আমরা তাদের তিনটির উপর ফোকাস করতে যাচ্ছি৷

আপনি শিখতে যাচ্ছেন :

  • আরজিভি অ্যারে
  • অপ্টপার্স লাইব্রেরি
  • থর রত্ন

চলুন শুরু করা যাক!

রুবি 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 রত্নটি দেখতে হবে। এটিই রেল ব্যবহার করে।

রেলে আপনি কিছু করেন যেমন :

  • 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 এর মত একটি কমান্ড থাকে , যা অনেকগুলি বিভিন্ন কাজের জন্য ব্যবহৃত হয়, তাহলে Thor একটি দুর্দান্ত পছন্দ!

রুবি রিডলাইন লাইব্রেরি

আপনি কি 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. রুবি মানচিত্র পদ্ধতি কীভাবে ব্যবহার করবেন (উদাহরণ সহ)

  2. রুবিতে ফাইলগুলি কীভাবে পড়তে এবং লিখতে হয় (উদাহরণ সহ)

  3. রুবি দিয়ে কীভাবে পার্সার তৈরি করবেন

  4. SwiftUI এর সাথে কীভাবে ডিজাইন সিস্টেম তৈরি করবেন