কোন মাইগ্রেশন ডাটাবেসের জন্য চালিত হয়েছে তার ট্র্যাক কীভাবে রেল রাখবে?


94

রেল ডক অনুসারে: http://guides.rubyonrails.org/migrations.html

"সক্রিয় রেকর্ড ট্র্যাকগুলি যা ইতিমধ্যে মাইগ্রেশন পরিচালিত হয়েছে তাই আপনাকে যা করতে হবে তা হ'ল আপনার উত্স আপডেট করুন এবং রেক ডিবি চালান: মাইগ্রেট করুন" "

অ্যাক্টিভেকর্ড আসলে কীভাবে এটি করে? অ্যাক্টিভ রেকর্ড ডেটা কোথায় সঞ্চয় করে?

আমার সন্দেহ হয় এটি ডাটাবেসে নিজেই সংরক্ষণ করা যায়? কোথাও একটা টেবিলে।

আমার ডেভলপমেন্ট মেশিনে, আমি সমস্ত স্থানান্তর চালিয়েছি। তারপরে আমি mysqldump ব্যবহার করে প্রোডাকশন ডাটাবেস অনুলিপি করেছিলাম। তারপরে আমি "রেক ডিবি: মাইগ্রেট: অবস্থা" দৌড়েছি, এটি সঠিকভাবে স্থানান্তরগুলি প্রদর্শন করে যা উত্পাদন ডাটাবেসে চালানো দরকার।

আমি ভাবতাম যে অ্যাক্টিভেকর্ড টাইমস্ট্যাম্পটি ব্যবহার করে সর্বশেষ স্থানান্তর চলমান ট্র্যাক করে। তবে আমি মনে করি এটি সত্য নয় কারণ অ্যাক্টিভেকর্ড সঠিকভাবে "পুরানো" স্থানান্তরকে অন্য কোড শাখা থেকে মার্জ করে runs

এই বিস্তৃত জ্ঞানের ভিতরে কেউ থাকতে পারে? ধন্যবাদ


4
এটি ডাটাবেসে একটি সারণী রয়েছে যা ট্র্যাক করে রাখে, আমি বিশ্বাস করি।
জ্যাক ফ্র্যাংকলিন

উত্তর:


167

রেলগুলি আপনার ডেটাবেজে একটি টেবিল তৈরি করে যা কোনও schema_migrationsমাইগ্রেশন চালিয়েছে তার উপর নজর রাখতে।

সারণীতে একটি একক কলাম রয়েছে version,। যখন রেলগুলি একটি মাইগ্রেশন চালায়, এটি স্থানান্তরের ফাইলের নামের শীর্ষস্থানীয় অঙ্কগুলি নেয় এবং "সংস্করণ" এর জন্য একটি সারি সন্নিবেশ করায়, এটি চালানো হয়েছে তা বোঝায়। যদি আপনি সেই মাইগ্রেশন পিছনে ফিরে যান, রেলগুলি সংশ্লিষ্ট সারিটি মুছে ফেলবে schema_migrations

উদাহরণস্বরূপ, নামান্তরিত মাইগ্রেশন ফাইল চালানো সারণীতে 20120620193144_create_users.rbএকটি সংস্করণ সহ একটি নতুন সারি 20120620193144প্রবেশ করবে schema_migrations

পূর্ববর্তী সংস্করণগুলির সাথে মাইগ্রেশন প্রবর্তনের জন্য আপনি যে কোনও মুহুর্তে মুক্ত। রেলগুলি সর্বদা যে কোনও নতুন মাইগ্রেশন চালিত করবে যার জন্য কোনও একই সারি নেই schema_migrations। শীর্ষস্থানীয় অঙ্কগুলি টাইমস্ট্যাম্প হওয়া উচিত নয়, আপনি নিজের স্থানান্তর কল করতে পারেন 001_blah.rb। রেলের পূর্ববর্তী সংস্করণগুলি এই ফর্ম্যাটটি ব্যবহার করেছিল এবং সদ্য উত্পন্ন স্থানান্তরকরণের জন্য ক্রমসংখ্যক নম্বর ব্যবহার করেছিল। পরবর্তী সংস্করণগুলি একই সংখ্যার সাথে একাধিক বিকাশকারীকে স্বতন্ত্রভাবে মাইগ্রেশন উত্সাহিত করা থেকে বিরত রাখতে টাইমস্ট্যাম্পগুলিতে স্যুইচ করেছে।


বিশেষত দরকারী যখন আপনি একটি মাউন্টেবল ইঞ্জিন এবং একটি ডামি অ্যাপ্লিকেশনটির মিশ্রণটি ব্যবহার করছেন
ডোনাতো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.