2013-09-27 7 views
5

हमारे पोस्टग्रेज़ डेटाबेस में दो स्कीमा हैं: एक सार्वजनिक स्कीमा और मेटाडाटा स्कीमा। मुझे अपने परीक्षण डेटाबेस में दोनों स्कीमा की आवश्यकता है, लेकिन rake db:schema:dump केवल सार्वजनिक स्कीमा को डंप करता है। यदि मैं schema_search_path: "public, metadata" को अपने डेटाबेस.इम फ़ाइल में जोड़ता हूं, तो यह दोनों स्कीमा को डंप करता है, लेकिन स्कीमा जानकारी वहां नहीं है।मैं रेक डीबी का उपयोग करके एकाधिक पोस्टग्रेस स्कीमा कैसे डंप कर सकता हूं: डंप: स्कीमा

मैं दोनों स्कीमा को db/schema.rb पर कैसे डंप कर सकता हूं ताकि मैं उन्हें rake db:test:prepare से लोड कर सकूं?

+1

कोड पढ़ना, मुझे नहीं लगता कि जब तक आप देशी प्रारूप में डंप नहीं करते हैं तब तक यह संभव नहीं है। उदाहरण के लिए, मुझे लगता है कि आप एक table_name_prefix जोड़ सकते हैं, लेकिन यह वैश्विक है और सभी तालिकाओं में जोड़ा जाएगा। जैसे, आप "ActiveRecord :: Base.table_name_prefix = 'public' 'आज़मा सकते हैं।", यह काम कर सकता है। – Rob

उत्तर

2

ऐसा लगता है कि उत्तर स्कीमा फ़ाइल की बजाय संरचना फ़ाइल का उपयोग करना है।

इस application.rb को

# use a .sql structure instead of a schema.rb for the schema 
config.active_record.schema_format = :sql 

अपने schema.rb फ़ाइल निकालने के जोड़े

यह होगा अब डंप अपने डेटाबेस स्कीमा (RB) के intead संरचना (SQL) का उपयोग करते हुए और यह अधिक अभिव्यक्तिपूर्ण हो सकता है। हालांकि, अब यह आपके डेटाबेस विक्रेता से जुड़ा हुआ है (हमारे लिए एक बड़ा सौदा नहीं)।

bundle exec rake db:test:prepare 
संबंधित मुद्दे