2012-04-12 27 views
7

मैंने अपने रेल ऐप की शुरुआत के बाद से बहुत सारे माइग्रेशन बनाए हैं। उनमें से कुछ जहां केवल परीक्षण उद्देश्यों के लिए। अब मेरे पास बहुत सारे माइग्रेशन हैं जो पूरी तरह से बेकार हैं (उदाहरण: माइग्रेशन में एक टेबल बनाएं और इसे अगले में छोड़ दें)।रेलों में पिछले माइग्रेशन को हटाएं

जैसा कि schema.rb एक बार अद्यतन हो जाता है डीबी: माइग्रेट चलाया जाता है, क्या सभी माइग्रेशन को हटाना और schema.rb की वास्तविक सामग्री से शुरू करना संभव है?

+1

आप 'रेक डीबी: स्कीमा: लोड' –

+0

का उपयोग कर सकते हैं और सभी माइग्रेशन फ़ाइलों को हटा सकते हैं? – Luc

उत्तर

8

हां, आप पुरानी माइग्रेशन को हटा सकते हैं (और शायद चाहिए)। एक ऐसा बिंदु आएगा जहां आपका पुराना माइग्रेशन अब काम नहीं कर सकता है क्योंकि आपका मॉडल कोड आपकी स्कीमा के बाद के संस्करणों पर निर्भर करेगा।

तो हर तरह से माइग्रेशन हटाना (आप उन्हें स्रोत नियंत्रण में है, है ना?), और

rake db:schema:load 

का उपयोग एक नया डेटाबेस प्रारंभ करने में अगर आप की जरूरत है।

अद्यतन: रेल गाइड अब ऐसा ही कुछ इस बारे में क्या कहना है: http://guides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you

+0

'रेक डीबी: स्कीमा: लोड' का उपयोग 'रेक डीबी: माइग्रेट' के बजाय करें? – methyl

+0

नहीं 'रेक डीबी: स्कीमा: लोड' आपके वर्तमान डेटाबेस को डंप करता है और इसे' schema.rb' से फिर से बनाता है। 'रेक डीबी: माइग्रेट' मौजूदा डेटाबेस में किसी भी उत्कृष्ट माइग्रेशन लागू करता है। – Thilo

+0

यदि मेरे पास schema.rb का अंतिम संस्करण है तो उन्हें स्रोत नियंत्रण में रखना महत्वपूर्ण क्यों है? वह एक महत्वपूर्ण व्यक्ति नहीं होना चाहिए? – Luc

0

यह करने के लिए एक बेहतर तरीका निम्न करने के लिए है ...

एक बार जब आप अपनी परियोजना में एक मील का पत्थर तक पहुँचते हैं, और आप निश्चित हैं कि आप डीबी, के उस संस्करण के नीचे माइग्रेट नहीं करना चाहते हैं, आप अपनी बड़ी संख्या में माइग्रेशन फ़ाइलों को एक माइग्रेशन फ़ाइल के साथ प्रतिस्थापित कर सकते हैं, जिसे आप तब "प्रारंभिक" माइग्रेशन के रूप में उपयोग कर सकते हैं जो बंडल-अप सब कुछ जो उस तारीख तक किया गया था।

उसके बाद: अपनी परियोजना में माइग्रेशन का उपयोग जारी रखें!

कभी भी अपनी schema.rb फ़ाइल को हाथ से संपादित न करें .. और कभी भी डीबी/schema.rb फ़ाइल लोड न करें जब तक कि यह आपदा रिकवरी जैसी चीज़ न हो।

आपके पास 100% गारंटी नहीं है कि फ़ाइल नियंत्रण में फ़ाइल की जांच की गई नवीनतम या यहां तक ​​कि सही संस्करण भी है।

ऊपर और नीचे माइग्रेट करना अधिक सुरक्षित है, और इसके बजाए एक ही माइग्रेशन फ़ाइल में बड़ी मात्रा में माइग्रेशन को बंडल करें।

schema.rb फ़ाइल मैन्युअल रूप से लोड करके, आप माइग्रेशन प्रदान करते हुए सुरक्षा नेट को पूरी तरह से बाधित करते हैं। यह सिर्फ एक अच्छा विचार नहीं है।