2010-04-15 16 views
16

क्या डेवलपर डेटाबेस से डेटा को परीक्षण में कॉपी करने का कोई छोटा तरीका है? मुझे पता है कि स्कीमा की प्रतिलिपि बनाने और डेटाबेस को फिर से बनाने का तरीका है, लेकिन क्या विकास के साथ परीक्षण डेटाबेस को पॉप्युलेट करने के लिए कोई रेक कार्य है?रेल - विकास डेटा के साथ परीक्षण डेटाबेस पॉप्युलेट करें

उत्तर

16

आप mysql सीधे उपयोग कर सकते हैं:

mysqldump app_development | mysql app_test 
+0

यदि आप mysql का उपयोग नहीं कर रहे हैं, तो @ j0k का अब तक का सबसे अच्छा जवाब है: रेक डीबी: टेस्ट: क्लोन और आर रेक डीबी: बीज RAILS_ENV = 'test' – Krut

12

आप उपयोग कर सकते हैं:

rake db:test:clone 

परीक्षण में विकास db कॉपी करने के लिए।

+13

मेरे लिए बिल्कुल काम नहीं करता है। संरचना बनाई गई है, लेकिन कोई रिकॉर्ड कॉपी नहीं किया गया है। क्या यह कार्य डेटा को कॉपी करने का मकसद है? वर्णन सीधे इंगित नहीं कर रहा है। – mdrozdziel

+1

यह मेरे लिए काम नहीं किया। परीक्षण डेटाबेस खाली लगता है ... –

+9

डीबी: परीक्षण: क्लोन डीबी का संयोजन है: स्कीमा: डंप और डीबी: परीक्षण: वास्तव में * डेटा * – JohnMetta

4

तुम सिर्फ अपनी संपूर्णता में विकास डीबी क्लोन करने के लिए चाहते हैं, तो क्या सिर्फ development.sqlite3 को कॉपी करने और test.sqlite3 का नाम बदलने के साथ गलत क्या है? आप बैच फ़ाइल (या अपने ओएस पर इसके बराबर) स्थापित करके प्रक्रिया को स्वचालित कर सकते हैं जिसे आप कमांड लाइन से चला सकते हैं।

यह स्थानीय रूप से काम करेगा, लेकिन मुझे अभी एहसास हुआ कि आप एक गैर-स्थानीय वातावरण सोच रहे होंगे, इस मामले में शायद यह नहीं होगा।

namespace :db do 
    namespace :test do 
    task :prepare => :environment do 
     Rake::Task["db:seed"].invoke 
    end 
    end 
end 

तब:

3

एक वैकल्पिक पद्धति अगर आप बीज (db/seeds.rb)

पहले, उदाहरण के लिए एक रेक कार्य जोड़ने लिब के लिए/कार्य/इस कोड के साथ test_seed.rake का उपयोग जब भी आप माइग्रेशन और बीजों के माध्यम से अपनी डेटाबेस संरचना/सामग्री बदलते हैं, तो आप

rake:db:test:prepare 

स्कीमा और बीज डेटा की प्रतिलिपि बनाने के लिए चला सकते हैं।

तो पूरा चरणों होगा:

rake db:migrate 
rake db:seed 
rake db:test:prepare 
+0

यदि आप 'रेक डीबी: टेस्ट:' रेक डीबी के बाद तैयार करें 'बीज 'यह आपके बीज डेटा को हटा देगा =] – professormeowingtons

5

सभी डेटाबेस के लिए:

rake db:test:clone && rake db:seed RAILS_ENV='test' 
+0

ओप, मैंने सोचा था कि आप seed.rb फ़ाइल के साथ परीक्षण डेटाबेस को पॉप्युलेट करना चाहते हैं। – drr

+2

वह जो चाहता है उसके लिए इसे अपडेट करें? – dove

3
Postgres साथ

, इसलिए जैसे डेटाबेस कॉपी:

खाका originaldb के साथ डेटाबेस newdb बनाएं स्वामी डबसर;

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