কম্পিউটার টিউটোরিয়াল

পাওয়ারফুল রুবি 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} 

এটি সিম্পল জিনিসের জন্য কাজ করে, কিন্তু আপনি যদি একটি বড় অ্যাপ্লিকেশন লিখতে চান তবে আপনি অন্যান্য সমাধান বিবেচনা করতে পারেন।

Option Parser লাইব্রেরি কীভাবে ব্যবহার করবেন

রুবি সাথে 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 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. রুবির Map মেথড মাস্টারিং: উদাহরণসহ একটি ব্যবহারিক গাইড

  2. রুবিতে ফাইল পড়া এবং লেখা: একটি স্টেপ-বাই-স্টেপ গাইড

  3. রুবি পার্সিং মास্টার: স্ক্র্যাচ থেকে নিজস্ব পার্সার বানান

  4. SwiftUI দিয়ে একটি রবাস্ট ডিজাইন সিস্টেম বানান: একটি পূর্ণ গাইড