2012-02-17 6 views
9

हमारे पास लगभग 100 डेटाबेस माइग्रेशन फ़ाइलें हैं। उनमें से कई स्कीमा परिवर्तन करते हैं जो अपरिवर्तनीय हैं। बाद में माइग्रेशन भी होते हैं जो पहले माइग्रेशन में बनाए गए टेबल को बदलते या हटाते हैं।हमारे पास बहुत सारी डेटाबेस माइग्रेशन फाइलें हैं - क्या हमें उन्हें रखना चाहिए?

हम schema.rb फ़ाइल से सीधे नए डेटाबेस बना रहे हैं, इसलिए हम सोच रहे थे कि माइग्रेशन के पूर्ण सेट को रखने का कोई कारण है या नहीं?

हम एक नया माइग्रेशन बनाएंगे जो हमारे मौजूदा schema.rb पर आधारित है।

उत्तर

7

हां, जो आप प्रस्तावित कर रहे हैं उसे सबसे अच्छा अभ्यास माना जाता है।

मैंने इसे अपने पुराने ऐप्स के साथ कई बार किया है। जब तक आप संतुष्ट न हों, तब तक आप अपने माइग्रेशन को कहीं भी वापस नहीं लेना चाहेंगे, बेशक, यह एप्लिकेशन रखरखाव का एक महत्वपूर्ण हिस्सा है - यदि आपके पास बहुत पुराने माइग्रेशन हैं, तो यह हमेशा db:reset या करने के लिए ले सकता है एक नया विकास वातावरण चल रहा है।

+0

हमने कहीं खोजने की कोशिश की है, इस बारे में बात की गई थी - क्या आप किसी भी साइट या संसाधनों के बारे में जानते हैं जो रेल/डेटाबेस सर्वोत्तम प्रथाओं के बारे में विस्तार से बताते हैं? – roo

+0

@roo मैंने कुछ "सर्वोत्तम प्रथाओं" साइटों को देखा है, लेकिन उनमें से कोई भी विशेष रूप से इस मुद्दे को संबोधित नहीं कर रहा है। मैंने स्थानीय हैकथॉन में कुछ साथी रूबीस्ट्स के साथ चर्चा करने के बाद इसे सबसे अच्छा अभ्यास के रूप में उठाया; शायद ही वैज्ञानिक लेकिन निश्चित रूप से सहकर्मी-समीक्षा की। :) अगर मैं इस मामले के लिए सर्वोत्तम अभ्यास के रूप में बहस करता हूं, तो मैं कहूंगा कि आपके किसी भी कोडबेस को अव्यवस्थित करने में कोई समझ नहीं आती है - माइग्रेशन शामिल हैं - इतिहास के साथ कोई भी इसका उपयोग नहीं कर सकता है। अगर कोई अपनी शिक्षा के लिए डेटाबेस इतिहास पढ़ना चाहता है, तो गिट आपको कवर करेगा; कामकाजी शाखा में होने का कोई कारण नहीं है। –

+0

हाँ, हम भी एक ही निष्कर्ष पर बहुत अधिक आए थे। यह जानकर अच्छा लगा कि दूसरों के पास एक ही वार्तालाप है :) – roo

4

मैं rake db:setup और rake db:reset विशेष रूप से (कभी नहीं rake db:migrate) का उपयोग एक नया डेटाबेस स्थापित करने के लिए, एक उत्पादन सर्वर पर या एक नया विकास मशीन पर। डेटाबेस को पुन: बनाने के लिए वे आदेश पहले से ही schema.rb या structure.sql का उपयोग करते हैं।

यह कहा गया है कि schema.rb की प्रतिलिपि बनाना वास्तव में आसान है, इसे एक नए प्रारंभिक बिंदु के रूप में उपयोग करें और सभी पुराने माइग्रेशन को हटा दें।

मैं ऐतिहासिक उद्देश्यों के लिए अपने प्रवासन रखना पसंद करता हूं, लेकिन यह स्वाद का विषय है।

संबंधित मुद्दे