11

में कॉलम के क्रम को बदलने में एक निराशाजनक मुद्दा है जहां मेरे रेल माइग्रेशन स्कीमा को व्हाइटस्पेस और तालिका के कॉलम की स्थिति के साथ अपडेट करते हैं।रेल माइग्रेशन हमेशा व्हाइटस्पेस डालने या स्कीमा

इसलिए जब मैं bundle exec rake db:migrate चलाता हूं तो यह निम्न परिदृश्यों में से एक करेगा। जब मैं इसे अपनी मुख्य शाखा में विलय करता हूं और अन्य डेवलपर्स इसे बंद करते हैं, तो उनके रेल प्रवासन टैब और स्थिति क्रम को उलट देता है।

हमने देखा है कि यदि स्कीमा का अंतिम कमांडर रहा है तो माइग्रेशन चलाने पर टीम के सभी तीन डेवलपर्स के पास एक ही समस्या है।

मैंने अभी postgres to v9.2.4 अपडेट किया है जो अन्य देवताओं के समान है। मैं और क्या कोशिश कर सकता है के बारे में कोई विचार?

उदाहरण

नीचे प्रदर्शित करने के लिए क्या हो रहा है Git डिफ हैं। फिर से आदेश देने स्कीमा की

उदाहरण:

create_table "accounts", :force => true do |t| 
    t.integer "organisation_id" 
- t.boolean "active",    :default => false 
    t.text  "notes" 
+ t.boolean "active",    :default => false 
    end 

स्कीमा के लिए टैब को जोड़ने का उदाहरण:

create_table "comments", :force => true do |t| 
- t.integer "commentable_id", :default => 0 
- t.string "commentable_type", :default => "" 
+ t.integer "commentable_id",  :default => 0 
+ t.string "commentable_type", :default => "" 
- t.datetime "created_at",      :null => false 
- t.datetime "updated_at",      :null => false 
+ t.datetime "created_at",       :null => false 
+ t.datetime "updated_at",       :null => false 
+0

आपको क्या लगता है कि व्हाइटस्पेस टैब हैं? उन 'create_table' में से किसी एक के संस्करणों के पहले और बाद में पूरी तरह से देखने का कोई मौका? –

+0

@muistooshort धन्यवाद, वे व्हाइटस्पेस – Coderama

+1

हो सकते हैं पहला व्यक्ति इसका मतलब है कि डेटाबेस के अंदर सभी के कॉलम एक ही क्रम में नहीं हैं, 'psdl' के अंदर' \ d accounts' आउटपुट की तुलना करें और आपको अपराधी मिल जाएगा; यह विभिन्न तरीकों से हो सकता है और कोई समस्या नहीं होनी चाहिए। दूसरा वाला शायद एक संरेखण की बात है (यानी सभी ': डिफ़ॉल्ट => ...' विकल्प लाइन अप करें) लेकिन 'schema.rb' फ़ाइलों के पहले और बाद में पूरी तरह से देखे बिना बताना मुश्किल है। –

उत्तर

-12

तुम सिर्फ अपने संस्करण नियंत्रण से schema.rb अनदेखा कर देना चाहिए। यह माइग्रेशन के क्रम के आधार पर अलग-अलग बदलता है और उन्हें उत्पन्न करता है। प्रोजेक्ट में शामिल प्रत्येक डेवलपर के लिए आपको केवल एप्रोपीएटेड स्कीमा उत्पन्न करने के लिए माइग्रेशन की आवश्यकता है।

सम्मान।

+3

* सुधार *: आपको बस ** अपने संस्करण नियंत्रण से schema.rb को अनदेखा नहीं करना चाहिए **। http://stackoverflow.com/questions/6520017/is-it-a-good-idea-to-put-db-schema-rb-to-gitignore-list – Dorian

0

मुझे संदेह है कि यह त्रुटि सफेद रिक्त स्थान की विभिन्न कॉन्फ़िगरेशन ('टैब चौड़ाई' के कारण होती है यदि आप उत्कृष्टता का उपयोग कर रहे हैं)।

2

मैंने इस समस्या को हल करने के लिए एक मणि बनाया।

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

https://github.com/jakeonrails/fix-db-schema-conflicts

आप अपने Gemfile में जोड़ने तुम सिर्फ चलाने रेक डाटाबेस के बाद: विस्थापित या रेक db: स्कीमा: सामान्य की तरह डंप।

+1

धन्यवाद! यह रेल कोर – mahemoff

+0

चीयर्स में होना चाहिए, खुशी है कि इससे किसी को वहां मदद मिली! – jakeonrails

+2

@ जेकोनराइल्स मैंने इसे पूरी तरह से दुर्घटना से पाया। मुझे संदेह है कि आप 'सॉर्ट' शब्द जोड़कर मणि के नाम को अतिरिक्त ध्यान मिलेगा। महान काम, धन्यवाद! – user3763682

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