रेक db: टेस्ट: वास्तव में क्या करते हैं?


124

मैं पटरियों ट्यूटोरियल वीडियो का पालन कर रहा हूं और मैं यह पता नहीं लगा सकता कि db:test:prepareवास्तव में कमांड क्या करता है। क्या कोई स्पष्टीकरण दे सकता है?

जवाबों:


119

रेक डीबी: ऊपर का माइग्रेशन विकास पर्यावरण पर किसी भी लंबित माइग्रेशन को चलाता है और डीबी / स्कीमा / आरआरबी को अपडेट करता है। रेक डीबी: परीक्षण: लोड वर्तमान डीबी / स्कीमा.आरबी से परीक्षण डेटाबेस को फिर से बनाता है। बाद के प्रयासों पर, पहले डीबी: टेस्ट: तैयार करना एक अच्छा विचार है, क्योंकि यह पहले से लंबित माइग्रेशन की जाँच करता है और आपको उचित चेतावनी देता है।

- http://guides.rubyonrails.org/testing.html

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


19
rake db:test:prepareअब पदावनत हो गया है।
Jngai1297

3
उपरोक्त url मर चुका है, यह नया नया github.com/rails/rails/blob/4-1-stable/activerecord/…
riffraff

12
और यह वापस github.com/rails/rails/commit/…
fenec

4
@ Jngai1297 अब नहीं!
फिलिप


42

विशेष रूप से, rake db:test:prepareनिम्न कार्य करेगा:

  • लंबित माइग्रेशन और
  • परीक्षण स्कीमा लोड करें

यही है, यह db/schema.rbनिर्धारित करने के लिए आपकी फ़ाइल दिखाई देगी कि क्या आपके प्रोजेक्ट में मौजूद कोई भी माइग्रेशन जो चलाया नहीं गया है। मान लें कि कोई बकाया माइग्रेशन नहीं हैं, तो यह डेटाबेस को खाली कर देगा और db/schema.rbफ़ाइल की सामग्री के आधार पर इसे फिर से लोड करेगा ।


2

रेक डीबी: टेस्ट: तैयारी इस तरह से पीजी मुद्दों के लिए एक अच्छा समाधान है ।

"पीजी :: अपरिवर्तनीय: त्रुटि: संबंध मौजूद नहीं है" एक सही रेल नामकरण और सम्मेलन के साथ "जहां मैं सिर्फ निष्पादित नहीं कर सका। rake db:migrate RAILS_ENV=production

जब, उदाहरण के लिए आप यहां चर्चा किए गए बग के लिए परीक्षण डेटाबेस नहीं बना सकते हैं : "PG अपरिभाषित त्रुटि संबंध उपयोगकर्ता मौजूद नहीं हैं"

सभी ने इस त्रुटि को "PG :: UndefinedTable: ERROR: रिलेशन xxxxx मौजूद नहीं है" को घेर लिया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.