অনেক মানুষ ভুলে যায় যে রুবি ওয়েব অ্যাপ্লিকেশনের বাইরেও অনেক কিছু করতে পারে। এই আর্টিকেলে, আমি আপনাকে কমান্ড-লাইন অ্যাপ্লিকেশন বিল্ড করার পদ্ধতি দেখাতে চাই তা রিমেডি করতে!
এখানে কিছু কমান্ড-লাইন অ্যাপ্লিকেশন যা আপনি জানতে পারেন:
psqlrailsbundlergemgit
কমান্ড-লাইন অ্যাপ্লিকেশন বানানোর অনেক পদ্ধতি রয়েছে এবং এই আর্টিকেলে আমরা তিনটি পদ্ধতিতে ফোকাস করব।
আপনি শিখবেন:
- 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থাকতে পারে এক্সট্রা ওয়ার্ক ছাড়া - প্রতিটি অপশনের একটি ডেসক্রিপশন থাকে, যা হেল্প মেনুর অংশ হবে
- হেল্প মেনু অটোমেটিক্যালি বিল্ড হয়, তাই আপনাকে প্রতিবার অপশন যোগ বা রিমুভ করলে ম্যানুয়ালি আপডেট করতে হবে না
মেনুটি এমন দেখায়:

সেরা অংশ?
এই সব রুবি-তে বিল্ট-ইন, তাই ইনস্টল করার কিছু নেই!
Thor জেম কীভাবে ব্যবহার করবেন
আপনি যদি অপশন পার্সিং-এর জন্য একটি ভিন্ন অ্যাপ্রোচ খুঁজছেন তবে Thor জেমে এক নজর দিন। এটি হলো যা রেইলস ব্যবহার করে।
রেইলসে আপনি করুন:
rails newrails generaterails 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 একটি দুর্দান্ত চয়েস!
রুবি 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 টাইপের মানুষ হলেও, কমান্ড-লাইন অ্যাপ্লিকেশন খুব পাওয়ারফুল এবং বানাতে মজাদার।
একবার চেষ্টা করুন এবং আজ থেকে আপনার নিজস্ব বানানো শুরু করুন 🙂