2013-01-22 39 views
6

मैं सिर्फ एक रेल इंजन विकसित करने वाली परियोजना में शामिल हुआ, जिसमें परीक्षण के लिए एक डमी ऐप भी है।रेल इंजन के लिए माइग्रेशन का प्रबंधन कैसे करें + डमी ऐप

foo/ 
foo/spec/dummy/ 

वहाँ

foo/db/migrate/ 
foo/spec/dummy/db/migrate/ 

में समान माइग्रेशन हैं मैं rake db:migrate डमी app से, सब कुछ ठीक है। यदि मैं इंजन से भी ऐसा करता हूं (वर्तमान निर्देशिका = foo) मुझे एक ही नाम के साथ एकाधिक माइग्रेशन के बारे में त्रुटि मिलती है।

प्रश्न 1) क्या रेकैकाइल बोर्क हो गए हैं? (db:migrate को डमी ऐप पर पुन: स्थापित करना चाहिए?)

प्रश्न 2) क्या माइग्रेशन केवल एक निर्देशिका में होना चाहिए? यदि हां, तो कौन सा?

हम रेल 3.2.9, ruby ​​1.9.3p194 का उपयोग कर रहे हैं।

उत्तर

7

प्रश्न 1
Rakefile कल्पना/डमी एप्लिकेशन के लिए खाते के लिए कोई प्रविष्टि नहीं होनी चाहिए। उदाहरण के लिए,

Bundler::GemHelper.install_tasks 
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__) 
load 'rails/tasks/engine.rake' 

यहाँ और अधिक विस्तृत उदाहरण rakefile 2
है, https://github.com/twinge/questionnaire_engine/blob/engine2/Rakefile

प्रश्न IMO, माइग्रेशन केवल foo/db/विस्थापित फ़ोल्डर पर मौजूद होना चाहिए, और नहीं foo/कल्पना/डमी/db/विस्थापित। असल में, मैं डमी के डीबी/माइग्रेट या डीबी/स्कीमा को वर्जन नियंत्रित नहीं करता हूं।

क्यों? मैं डमी ऐप का उपयोग करता हूं यह सुनिश्चित करता हूं कि मेरे इंजन की स्थापना पर पूर्ण 100% काम करता है। इसलिए, यदि मैं संस्करण foo/spec/dummy db स्थिति को नियंत्रित करता हूं, तो मैं परीक्षण करूँगा जैसे कि पिछला इंस्टॉल था।

उदाहरण इंजन
https://github.com/twinge/questionnaire_engine/tree/engine2