রেক রুবিতে একজন জনপ্রিয় টাস্ক রানার।
টাস্ক কি?
- আপনার ডাটাবেসের একটি ব্যাকআপ তৈরি করা হচ্ছে
- আপনার পরীক্ষা চলছে
- পরিসংখ্যান সংগ্রহ ও প্রতিবেদন করা
এগুলি এমন ছোট কাজ যা রেক ছাড়া আপনার সমস্ত প্রকল্পে বিভিন্ন ফাইলে ছড়িয়ে ছিটিয়ে থাকবে৷
রেক আপনার কাজগুলিতে অ্যাক্সেসকে কেন্দ্রীভূত করে৷
রেক কিছু জিনিসকে আরও সহজ করে তোলে, যেমন একটি নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন ফাইলগুলি খুঁজে পাওয়া এবং যেগুলি সম্প্রতি সংশোধন করা হয়েছে৷
আরো একটি জিনিস :
Rake কে Rack এর সাথে গুলিয়ে ফেলবেন না, খুব একই নাম, কিন্তু সম্পূর্ণ ভিন্ন জিনিস।
- রেক একজন টাস্ক রানার।
- র্যাক রুবি সার্ভার এবং ফ্রেমওয়ার্ক একসাথে কাজ করতে সাহায্য করে।
এখন:
আসুন রেককে আরও বিস্তারিতভাবে অন্বেষণ করি!
কে রেক ব্যবহার করে?
রেল!
আপনি যদি রেলের সাথে আদৌ কিছু করে থাকেন তবে আপনি সম্ভবত rake db:migrate
এর সাথে পরিচিত আদেশ৷
অথবা rake routes
.
এটা ঠিক সেখানেই কাজ করছে।
লক্ষ্য করুন যে Rails, সংস্করণ 5.0 থেকে, আপনাকে সর্বাধিক rake
কল করতে দেয় rails
সহ কমান্ড পরিবর্তে।
অন্য কথায় :
আপনি rails db:migrate
করতে পারেন , কিন্তু রেক এখনও কাজ করছে৷
কিভাবে একটি রেক টাস্ক লিখতে হয়
এখানে একটি সহজ রেক টাস্ক:
desc "Print reminder about eating more fruit." task :apple do puts "Eat more apples!" end
আপনি এই কোডটি Rakefile
নামের একটি ফাইলের ভিতরে রাখতে পারেন , অথবা আপনি যদি Rails ব্যবহার করেন, আপনি এটি lib/tasks/apple.rake
এর অধীনে সংরক্ষণ করতে পারেন .
এই কাজটি চালানোর জন্য :
rake apple # "Eat more apples!"
টাস্কের ভিতরে, আপনি সাধারণ রুবি কোড লিখতে পারেন, তবে কিছু সহায়ক রেক পদ্ধতি রয়েছে যা আপনি ব্যবহার করতে পারেন।
উদাহরণস্বরূপ :
- রুবি (একটি রুবি ফাইল চালান)
- sh (সিস্টেম কমান্ড চালান)
- safe_ln (আপনার ফাইল সিস্টেমে একটি প্রতীকী লিঙ্ক তৈরি করুন)
রেকের মধ্যে রয়েছে FileUtils
মডিউল।
তার মানে আপনি cp
দিয়ে ফাইল কপি করতে পারেন , mkdir_p
দিয়ে ডিরেক্টরি তৈরি করুন , এবং এমনকি chown
দিয়ে ফাইলের অনুমতি পরিবর্তন করুন .
এখানে একটি উদাহরণ আছে :
task :clean_cache do rm_r FileList["tmp/cache/*"] end
rm_r
এর সাথে সাবধান (পুনরাবৃত্তি সহ সরান) কারণ এটি নিশ্চিতকরণ ছাড়াই ফাইলগুলি মুছে ফেলবে, আপনি যদি একটি নিশ্চিতকরণ পদক্ষেপ যোগ করতে চান তবে আপনি একটি নির্ভর কাজ যোগ করতে পারেন (পরে এই নিবন্ধে কভার করুন) এবং আপনি যদি চালিয়ে যেতে না চান তবে একটি ব্যতিক্রম উত্থাপন করুন।
অন্য ডিরেক্টরির ভিতরে রেক কমান্ড চালানো হচ্ছে
আপনি একটি নির্দিষ্ট ডিরেক্টরির মধ্যে একটি রেক কমান্ড চালাতে চাইতে পারেন।
এখানে কিভাবে :
task :import do puts "Importing data..." Dir.chdir(Rails.root.join("data")) { ruby "load-data.rb" } end
এই উদাহরণে, আমি data
এর ভিতরে একটি রুবি স্ক্রিপ্ট চালাচ্ছি আমার রেল প্রকল্পের ফোল্ডার।
কিভাবে রেকে নেমস্পেস ব্যবহার করবেন
যেহেতু কাজের একই নাম থাকতে পারে, একই নাম দুবার ব্যবহার করা সহজ।
তাই রেকের নামস্থান রয়েছে৷
৷উদাহরণস্বরূপ :
আপনি একটি backup
তৈরি করতে পারেন আপনার সমস্ত ব্যাকআপ কাজের জন্য নামস্থান৷
এরকম :
namespace :backup do task :create do # ... end task :list do # ... end task :restore do # ... end end
একটি নেমস্পেস টাস্ক চালানোর জন্য :
rake backup:create
নির্ভরশীল কাজ
রেক আপনাকে অন্যান্য কাজের একটি তালিকা সংজ্ঞায়িত করতে দেয় যা বর্তমান টাস্কের আগে চলতে হবে।
এটির সাহায্যে, আপনি যে কোনও সেটআপ করতে পারেন যা টাস্কের প্রয়োজন।
উদাহরণ:
task create_examples: "load_database" do # ... end
এই উদাহরণে, load_database
create_examples
এর আগে চলবে .
নির্ভরশীল কাজের তালিকাও স্ট্রিং বা চিহ্নের অ্যারে হতে পারে।
অন্য টাস্কের মধ্যে একটি রেক টাস্ক চালান
যদি বর্তমান টাস্কের আগে চালানো টাস্কের একটি সেট থাকার পরিবর্তে, আপনি বর্তমান টাস্কের মধ্যে অন্য টাস্ক চালাতে চান, তাহলে আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন।
উদাহরণ :
task :coverage do ENV['COVERAGE'] = 'true' Rake::Task["test"].execute end
এটি পরিবেশের ভেরিয়েবল সেট করতে সহায়ক হতে পারে যা পরীক্ষা কভারেজ এবং অন্যান্য বিকল্পগুলি সক্ষম করে।
কিভাবে রেক নিয়ম ব্যবহার করবেন
নিয়ম ফাইল এক্সটেনশন রূপান্তর সংজ্ঞায়িত করে।
উদাহরণ :
task compress: FileList["/tmp/*.txt"].ext(".txt.gz") rule '.txt.gz' => '.txt' do |t| sh "gzip", "-k", "-f", t.source end
নিয়মগুলি ব্যবহার করার সুবিধা হল যে একবার একটি ফাইল সংকুচিত হয়ে গেলে, সোর্স ফাইলটি পরিবর্তন না হওয়া পর্যন্ত এটি আবার সংকুচিত হবে না৷
এই কোডে কিছু জিনিস লক্ষ্য করুন :
- আমরা
FileList
ব্যবহার করি ক্লাস, যা রেকের অংশ, আমরা যে ফাইলগুলির সাথে কাজ করতে চাই তার একটি তালিকা নির্ধারণ করতে৷ - নিয়মটি টার্গেট এক্সটেনশন দিয়ে শুরু হয়, নিয়মের সাথে মিল রাখতে আমাদের
.ext(".txt.gz")
ব্যবহার করতে হবে।FileList
-এ . - এই
.txt.gz => .txt
এর মানে এই নয় যে আমরাtxt.gz
থেকে যাইtxt
-এ , এটা অন্য উপায় কাছাকাছি. তীরটি হ্যাশ সিনট্যাক্স।
রেক অপশন এবং কমান্ড
এখানে দরকারী রেক বিকল্পগুলির একটি তালিকা :
- rake -T (উপলভ্য কাজের তালিকা)
- rake -P (তালিকা কার্য এবং তাদের নির্ভরতা)
- rake -W (তালিকা টাস্ক এবং যেখানে তারা সংজ্ঞায়িত করা হয়)
- rake -V (ভার্বোজ মোড, ইকো সিস্টেম কমান্ড)
- rake -t (ডিবাগিং মোড)
- rake -f (একটি নির্দিষ্ট Rakefile ব্যবহার করুন)
উদাহরণস্বরূপ, একটি Rails অ্যাপে :
> 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
ভিন্ন জিনিস।
এই নিবন্ধটি শেয়ার করতে ভুলবেন না যাতে আরও লোকেরা এটি উপভোগ করতে পারে 🙂
পড়ার জন্য ধন্যবাদ!