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

রুবিতে Rake মাস্টার করুন: টাস্ক অটোমেশন-এর সম্পূর্ণ গাইড

Rake হলো রুবিতে একটি জনপ্রিয় টাস্ক রানার।

টাস্ক কী?

  • আপনার ডাটাবেসের ব্যাকআপ নেওয়া
  • আপনার টেস্টগুলো রান করা
  • স্ট্যাটস সংগ্রহ ও রিপোর্টিং

এই ছোট ছোট টাস্কগুলো Rake ছাড়া আপনার প্রজেক্টের চारों দিকে বিভিন্ন ফাইলে বिखরে থাকত।

Rake আপনার টাস্কগুলোর এক্সেস কেন্দ্রীভূত করে।

Rake কয়েকটি জিনিস সহজ করে দেয়, যেমন নির্দিষ্ট প্যাটার্নে ম্যাচ করা ফাইল খুঁজে বের করা এবং gầnে মডিফাইড ফাইলগুলো।

একটি জিনিস আরো:

Rake কে Rack দিয়ে গুলিয়ে ফেলবেন না, নাম খুব মিল কিন্তু সম্পূর্ণ আলাদা জিনিস।

  • Rake হলো একটি টাস্ক রানার।
  • Rack রুবি সার্ভার এবং ফ্রেমওয়ার্কের সাথে কাজ করতে সাহায্য করে।

এখন:

চলুন Rake কে আরও বিস্তারিত এক্সপ্লোর করি!

কে Rake ব্যবহার করে?

Rails!

আপনি যদি রেইলসের সাথে কীচু করছেন, তবে আপনি সম্ভবত rake db:migrate কমান্ডটি জানেন।

বা rake routes।

সেটিই Rake অ্যাকশনে।

লক্ষ্য করুন যে রেইলস, ভার্সন ৫.০ থেকে, অধিকাংশ rake কমান্ড rails দিয়ে কল করার অনুমতি দেয়।

অন্য কথায়:

আপনি rails db:migrate করতে পারেন, কিন্তু কাজ Rake করছে।

Rake টাস্ক কীভাবে লিখবেন

এখানে একটি সিম্পল Rake টাস্ক:

 desc "Print reminder about eating more fruit." task :apple do puts "Eat more apples!" end 

আপনি এই কোডটি Rakefile নামক একটি ফাইলে রাখতে পারেন, অথবা আপনি যদি রেইলস ব্যবহার করেন, তবে lib/tasks/apple.rake-এর অধীনে সেভ করতে পারেন।

এই টাস্ক রান করতে:

 rake apple # "Eat more apples!" 

টাস্কের ভিতরে আপনি সাধারণ রুবি কোড লিখতে পারেন, কিন্তু কিছু হেল্পফুল Rake মেথড আপনি ব্যবহার করতে পারেন।

উদাহরণস্বরূপ:

  • ruby (একটি রুবি ফাইল রান করুন)
  • sh (সিস্টেম কমান্ড রান করুন)
  • safe_ln (আপনার ফাইল সিস্টেমে সিম্বলিক লিংক তৈরি করুন)

Rake FileUtils মডিউল ইনক্লুড করে।

অর্থাৎ আপনি cp দিয়ে ফাইল কপি করতে পারেন, mkdir_p দিয়ে ডিরেক্টরি তৈরি করতে পারেন, এবং এমনকি chown দিয়ে ফাইল পারমিশন পরিবর্তন করতে পারেন।

এখানে একটি উদাহরণ:

 task :clean_cache do rm_r FileList["tmp/cache/*"] end 

rm_r (রিকার্সিভ রিমুভ) দিয়ে সতর্ক থাকুন কারণ এটি কনফার্মেশন ছাড়া ফাইল ডিলিট করে, আপনি যদি কনফার্মেশন স্টেপ যোগ করতে চান তবে একটি ডিপেনডেন্ট টাস্ক (বादে এই আর্টিকেলে কভার করা হয়েছে) যোগ করুন এবং এক্সেপশন থ্রো করুন আপনি যদি কন্টিনিউ করতে না চান।

অন্য ডিরেক্টরির ভিতরে Rake কমান্ড রান করা

আপনি একটি নির্দিষ্ট ডিরেক্টরির ভিতরে Rake কমান্ড রান করতে চাইতে পারেন।

এখানে কীভাবে:

 task :import do puts "Importing data..." Dir.chdir(Rails.root.join("data")) { ruby "load-data.rb" } end 

এই উদাহরণে, আমি আমার রেইলস প্রজেক্টের data ফোল্ডারের ভিতরে একটি রুবি স্ক্রিপ্ট রান করছি।

Rake-এ নেমস্পেস কীভাবে ব্যবহার করবেন

কারণ টাস্কগুলোর নাম একই হতে পারে, একই নাম দুবার ব্যবহার করা সহজ।

সেই কারণেই Rake-এ নেমস্পেস রয়েছে।

উদাহরণস্বরূপ:

আপনি আপনার সকল ব্যাকআপ টাস্কের জন্য একটি backup নেমস্পেস তৈরি করতে পারেন।

এভাবে:

 namespace :backup do task :create do # ... end task :list do # ... end task :restore do # ... end end 

নেমস্পেসড টাস্ক রান করতে:

 rake backup:create 

ডিপেনডেন্ট টাস্ক

Rake আপনাকে অন্যান্য টাস্কের একটি লিস্ট ডিফাইন করতে দেয় যেগুলো কারেন্ট টাস্কের আগে রান করতে হবে।

এই দিয়ে আপনি টাস্কের প্রয়োজনীয় সেটআপ করতে পারেন।

উদাহরণ:

 task create_examples: "load_database" do # ... end 

এই উদাহরণে, load_database create_examples-এর আগে রান হবে।

ডিপেনডেন্ট টাস্কের লিস্ট স্ট্রিং বা সিম্বলের অ্যারও হতে পারে।

অন্য একটি টাস্কের ভিতরে Rake টাস্ক রান করা

যদি কারেন্ট টাস্কের আগে রান হওয়া টাস্কের একটি সেটের বদলে, আপনি কারেন্ট টাস্কের ভিতরে অন্য একটি টাস্ক রান করতে চান, তবে আপনি নিচের কোড ব্যবহার করতে পারেন।

উদাহরণ:

 task :coverage do ENV['COVERAGE'] = 'true' Rake::Task["test"].execute end 

এটি টেস্ট কভারেজ এবং অন্যান্য অপশন ইনেবল করার জন্য এনভায়রনমেন্ট ভেরিয়েবল সেট করতে সাহায্যকারী হতে পারে।

Rake রুল কীভাবে ব্যবহার করবেন

রুল ফাইল এক্সটেনশন ট্রান্সফরমেশন ডিফাইন করে।

উদাহরণ:

 task compress: FileList["/tmp/*.txt"].ext(".txt.gz") rule '.txt.gz' => '.txt' do |t| sh "gzip", "-k", "-f", t.source end 

রুল ব্যবহার করার সুবিধা হলো একবার ফাইল কমপ্রেস হলে, সোর্স ফাইল পরিবর্তন না হওয়া পর্যন্ত আবার কমপ্রেস হবে না।

এই কোডে কয়েকটি জিনিস লক্ষ্য করুন:

  1. আমরা FileList ক্লাস ব্যবহার করেছি, যা Rake-এর অংশ, যাতে আমরা যে ফাইলগুলো নিয়ে কাজ করতে চাই সেগুলোর লিস্ট ডিফাইন করতে পারি।
  2. রুলটি টার্গেট এক্সটেনশন দিয়ে শুরু হয়, রুল ম্যাচ করানোর জন্য আমাদের .ext(".txt.gz") ব্যবহার করতে হয় FileList-এর ওপর।
  3. .txt.gz => .txt এর মানে নয় যে আমরা txt.gz থেকে txt-এ যাচ্ছি, বরং এর উল্টো। অ্যারোটি হ্যাশ সিনট্যাক্স।

Rake অপশন ও কমান্ড

এখানে কিছু উপকারী Rake অপশন:

  • rake -T (উপলব্ধ টাস্ক লিস্ট করুন)
  • rake -P (টাস্ক ও তাদের ডিপেন্ডেন্সি লিস্ট করুন)
  • rake -W (টাস্ক ও সেগুলো কোথায় ডিফাইন করা হয়েছে লিস্ট করুন)
  • rake -V (ভার্বোজ মোড, সিস্টেম কমান্ড ইকো করুন)
  • rake -t (ডিবাগিং মোড)
  • rake -f (নির্দিষ্ট Rakefile ব্যবহার করুন)

উদাহরণস্বরূপ, একটি রেইলস অ্যাপে:

 > rake -T test rake test # Runs all tests in test folder except system ones rake test:db # Run tests quickly, but also reset db rake test:system # Run system tests only 

সারসংক্ষেপ

আপনি Rake সম্পর্কে শিখেছেন, রুবির জন্য একটি জনপ্রিয় টাস্ক রানার।

rake -T ব্যবহার করুন উপলব্ধ টাস্কগুলো জানতে, নিজের টাস্ক তৈরি করুন এবং Rakefile-এ বা lib/tasks ফোল্ডারে যোগ করুন, এবং মনে রাখবেন Rake এবং Rack আলাদা জিনিস।

রুবিতে Rake মাস্টার করুন: টাস্ক অটোমেশন-এর সম্পূর্ণ গাইড

এই আর্টিকেলটি শেয়ার করতে ভুলবেন না যাতে আরও মানুষ উপভোগ করতে পারে 🙂

পড়ার জন্য ধন্যবাদ!


  1. রুবি Struct ও OpenStruct: দক্ষ ভ্যালু অবজেক্টস

  2. ডিস্ক ম্যানেজমেন্ট কী এবং কীভাবে ব্যবহার করবেন

  3. গাইডেড অ্যাক্সেস (Guided Access) কী? আইফোন ও আইপ্যাড সিকিউরিটিতে এর ব্যবহার

  4. RSS ফিড ব্যবহার কীভাবে করবেন: পড়ার দক্ষতা বাড়ান