Migrations হলো Ruby on Rails এর একটি শক্তিশালী ফিচার, যা ডেটাবেসের স্কিমা পরিবর্তন করার জন্য ব্যবহৃত হয়। এটি ডেটাবেসের টেবিল তৈরি, কলাম যোগ, কলাম পরিবর্তন, অথবা টেবিল মুছতে সাহায্য করে, এবং সবকিছু স্বয়ংক্রিয়ভাবে ট্র্যাক করে, যাতে ডেভেলপাররা ডেটাবেস পরিবর্তনগুলির ভার্সন কন্ট্রোল করতে পারে।
Migrations কী?
Migrations হলো Ruby ক্লাস যা ডেটাবেসের স্কিমা পরিবর্তন করতে ব্যবহৃত হয়। প্রতিটি migration একটি নির্দিষ্ট স্কিমা পরিবর্তন যেমন টেবিল তৈরি, কলাম যোগ, ইন্ডেক্স তৈরি ইত্যাদি অন্তর্ভুক্ত করে। মাইগ্রেশন চালানোর মাধ্যমে এই পরিবর্তনগুলো ডেটাবেসে বাস্তবায়িত হয়।
Migrations Rails অ্যাপ্লিকেশনের অংশ হিসেবে স্বয়ংক্রিয়ভাবে তৈরি হয় এবং তারা আপনার ডেটাবেসের স্কিমার ভার্সন ট্র্যাক করতে সহায়ক।
Migration তৈরি করা
Rails-এ একটি মাইগ্রেশন তৈরি করতে rails generate migration কমান্ড ব্যবহার করা হয়। এই কমান্ডটি একটি নতুন মাইগ্রেশন ফাইল তৈরি করে, যেখানে ডেটাবেস স্কিমার পরিবর্তন নির্দিষ্ট করা হয়।
উদাহরণ ১: টেবিল তৈরি করা
ধরা যাক, আপনাকে একটি users টেবিল তৈরি করতে হবে, যেখানে name (string) এবং email (string) কলাম থাকবে। আপনি এই কাজটি করতে পারেন:
rails generate migration CreateUsers name:string email:string
এই কমান্ডটি একটি মাইগ্রেশন ফাইল তৈরি করবে যার নাম হবে create_users এবং এতে name ও email কলাম যুক্ত করা হবে। ফাইলটি দেখতে এমন কিছু হবে:
class CreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
end
end
এখানে, create_table মেথড ব্যবহার করা হয়েছে যা users নামে একটি টেবিল তৈরি করবে এবং তার মধ্যে name এবং email কলাম যোগ করবে। t.timestamps স্বয়ংক্রিয়ভাবে created_at এবং updated_at টাইমস্ট্যাম্প কলাম যুক্ত করবে।
উদাহরণ ২: কলাম যোগ করা
ধরা যাক, আপনাকে users টেবিলের মধ্যে age নামক একটি কলাম যোগ করতে হবে। এর জন্য নতুন মাইগ্রেশন ফাইল তৈরি করুন:
rails generate migration AddAgeToUsers age:integer
এই কমান্ডটি একটি মাইগ্রেশন ফাইল তৈরি করবে, যা users টেবিলে age নামক একটি integer টাইপের কলাম যোগ করবে। ফাইলটি দেখতে এমন কিছু হবে:
class AddAgeToUsers < ActiveRecord::Migration[6.0]
def change
add_column :users, :age, :integer
end
end
এখানে, add_column মেথড ব্যবহার করা হয়েছে যা users টেবিলে age নামক একটি নতুন কলাম যোগ করবে।
উদাহরণ ৩: কলাম পরিবর্তন করা
ধরা যাক, users টেবিলের email কলামের ডাটা টাইপ পরিবর্তন করতে হবে। এর জন্য একটি মাইগ্রেশন ফাইল তৈরি করুন:
rails generate migration ChangeEmailTypeInUsers
এটি একটি মাইগ্রেশন ফাইল তৈরি করবে, যেখানে আপনি email কলামের টাইপ পরিবর্তন করবেন:
class ChangeEmailTypeInUsers < ActiveRecord::Migration[6.0]
def change
change_column :users, :email, :text
end
end
এখানে, change_column মেথড ব্যবহার করা হয়েছে যা users টেবিলের email কলামের টাইপকে text এ পরিবর্তন করবে।
উদাহরণ ৪: টেবিল মুছে ফেলা
ধরা যাক, আপনাকে users টেবিল মুছে ফেলতে হবে। এই কাজটি করতে নিচের কমান্ডটি ব্যবহার করুন:
rails generate migration DropUsersTable
এই কমান্ডটি একটি মাইগ্রেশন ফাইল তৈরি করবে, যা users টেবিল মুছে ফেলবে:
class DropUsersTable < ActiveRecord::Migration[6.0]
def change
drop_table :users
end
end
এখানে, drop_table মেথড ব্যবহার করা হয়েছে, যা users টেবিলটিকে ডিলিট করবে।
Migration চালানো
মাইগ্রেশন তৈরি করার পর, ডেটাবেসে এই পরিবর্তনগুলি বাস্তবায়িত করতে আপনাকে মাইগ্রেশন চালাতে হবে। মাইগ্রেশন চালানোর জন্য নিচের কমান্ডটি ব্যবহার করুন:
rails db:migrate
এই কমান্ডটি ডেটাবেসের স্কিমা আপডেট করবে এবং মাইগ্রেশনে উল্লেখিত পরিবর্তনগুলি (যেমন টেবিল তৈরি, কলাম যোগ ইত্যাদি) ডেটাবেসে প্রয়োগ করবে।
Migration Reversal (পূর্বাবস্থায় ফিরে যাওয়া)
Rails মাইগ্রেশন স্বয়ংক্রিয়ভাবে পরিবর্তনগুলো উল্টে যেতে পারে, অর্থাৎ আপনি যদি কোনো মাইগ্রেশন পূর্বাবস্থায় ফিরিয়ে আনতে চান, তাহলে rails db:rollback কমান্ড ব্যবহার করতে পারেন:
rails db:rollback
এটি শেষ মাইগ্রেশনটি পূর্বাবস্থায় ফিরিয়ে আনবে (যেমন টেবিল ডিলিট করা বা কলাম বাদ দেওয়া)। আপনি একাধিক রিভার্সাল করতে চাইলে STEP অপশন ব্যবহার করতে পারেন:
rails db:rollback STEP=3
এটি শেষ তিনটি মাইগ্রেশন পূর্বাবস্থায় ফিরিয়ে আনবে।
Migrations এবং Version Control
মাইগ্রেশন ফাইলগুলো সাধারণত Git বা অন্য কোনো ভার্সন কন্ট্রোল সিস্টেমে ট্র্যাক করা হয়। এর ফলে একাধিক ডেভেলপার একই ডেটাবেস স্কিমা ব্যবহার করতে পারে এবং ডেটাবেস পরিবর্তনগুলি সহজে সিঙ্ক্রোনাইজ করা যায়।
সারমর্ম
Rails-এ Migrations একটি অত্যন্ত গুরুত্বপূর্ণ টুল যা ডেটাবেসের স্কিমা পরিবর্তন করতে ব্যবহৃত হয়। এটি ডেটাবেসে টেবিল তৈরি, কলাম যোগ বা পরিবর্তন, এবং টেবিল মুছতে সহায়তা করে। মাইগ্রেশন কমান্ডের মাধ্যমে ডেটাবেসের কাঠামো পরিবর্তন করা যায়, এবং এগুলো ভার্সন কন্ট্রোলের মাধ্যমে ট্র্যাক করা সম্ভব হয়, যা টিম ডেভেলপমেন্টে অনেক সহায়ক। Migrations এর মাধ্যমে ডেটাবেসের কাঠামো সহজেই আপডেট এবং রিভার্স করা যায়, ফলে ডেভেলপাররা মডেল এবং ডেটাবেস স্কিমা পরিবর্তন করতে সহজেই কাজ করতে পারেন।
Read more