मुझे लगता है कि आपको अपमानजनक माइग्रेशन को कम नाजुक होने के लिए ठीक करना चाहिए, मुझे लगता है कि if
कथन और शायद rescue
पर्याप्त होगा।
लेकिन, अगर माइग्रेशन को ठीक करना वास्तव में एक विकल्प नहीं है, तो आप इसे विभिन्न तरीकों से नकली बना सकते हैं। सबसे पहले, आप माइग्रेशन विधियों पर टिप्पणी कर सकते हैं, rake db:migrate
चला सकते हैं, और फिर अपमानजनक माइग्रेशन को असम्बद्ध (या वापस) कर सकते हैं।
तुम भी नकली यह डेटाबेस लेकिन वाक्छल की इस तरह के अंदर कर सकते हैं अनुशंसित नहीं है जब तक आप जानते हैं कि आप क्या कर रहे हैं और आप मैन्युअल रूप से कोई आपत्ति नहीं है चीजों को पैच जब आप (अनिवार्य रूप से) एक गलती करते हैं। schema_migrations
नामक आपके डेटाबेस में एक टेबल है जिसमें कॉलम है जिसे version
कहा जाता है; कौन सा माइग्रेशन लागू किया गया है इसका ट्रैक रखने के लिए इस तालिका का उपयोग db:migrate
द्वारा किया जाता है। आपको बस इतना करना है कि उचित version
मान और rake db:migrate
INSERT को लगता है कि माइग्रेशन किया गया है। हमलावर प्रवास फ़ाइल खोजें:
db/migrate/99999999999999_XXXX.rb
फिर अपने डेटाबेस में जाते हैं और कहते हैं:
insert into schema_migrations (version) values ('99999999999999');
जहां 99999999999999
ज़ाहिर है, है, प्रवास का फ़ाइल नाम से नंबर। फिर rake db:migrate
चलाना उस माइग्रेशन को छोड़ देना चाहिए।
मैं तीसरे से पहले दूसरे विकल्प के साथ जाऊंगा, मैं केवल पूर्णता के लिए "हैक schema_versions
" विकल्प शामिल हूं।
स्रोत
2012-01-10 22:09:11
हां, मैं सिर्फ आगे चला गया और अस्थायी रूप से अपमानजनक माइग्रेशन को काट दिया। मैं व्यक्तिगत रूप से उचित बना देता था अगर बयानों या सिर्फ उत्पादन वातावरण की जांच की गई थी, लेकिन स्पष्ट रूप से जो व्यक्ति माइग्रेशन को संभालता है वह डीबी का उपयोग करने में विश्वास नहीं करता है: विकास के दौरान माइग्रेट = पी धन्यवाद – hmind
@ हिमंद: "वह व्यक्ति जो संभालता है माइग्रेशन डीबी का उपयोग करने में विश्वास नहीं करते हैं: विकास करते समय माइग्रेट करें "। अरे मेरा। अपने उत्पादन प्रणालियों को प्रकाशित करना एक बहुत ही मजेदार मजेदार समय होना चाहिए! –
सौभाग्य से, मैं या तो हाहा – hmind