डेटाबेस में प्रारंभिक डेटा लोड करने के लिए मैं बीज.आरबी के बजाय वाईएएमएल फ़ाइल का उपयोग कैसे करूं?रेल पर रूबी: वाईएएमएल फ़ाइल से बीज डेटा लोड करना
उत्तर
बाहर चेक जुड़नार के लिए रेल गाइड पर रूबी:
http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures
आमतौर पर, आप test/
निर्देशिका में YAML स्थिरता फ़ाइलों को बनाने और फिर उन्हें rake db:fixtures:load
आदेश का उपयोग कर अपने डेटाबेस में लोड कर सकते हैं। सभी चीज़ें हैं जो आप जुड़नार के साथ कर सकते पर पूर्ण प्रलेखन यहाँ है:
क्या वही बात विकास या उत्पादन के लिए काम करेगी? – fijiaaron
अंतिम लिंक टूटा हुआ है। साथ ही, 'test /' से बीज डेटा लोड करना चीजों को करने का सही तरीका नहीं लगता है। – Zaz
यह मुझे असहज महसूस करता है, लेकिन व्यवहार में कुछ लोग परीक्षण उद्देश्यों के लिए डेटा को पॉप्युलेट करने के लिए फिक्स्चर का उपयोग करते हैं। दो जगहों पर एक ही yaml बीजिंग फाइलों को और भी अधिक महसूस होता है ... icky। – jaydel
db/seeds.rb
में कोड जोड़ें YAML फ़ाइल पार्स करने के लिए, जैसे:
seed_file = Rails.root.join('db', 'seeds', 'categories.yml')
config = YAML::load_file(seed_file)
Category.create!(config)
फिर, बस YAML जगह db/seeds/categories.yml
में फाई। वाईएएमएल फ़ाइल सहयोगी सरणी की एक सूची होनी चाहिए, उदाहरण:
- name: accessory
shortcode: A
- name: laptop
shortcode: L
- name: server
shortcode: S
इस समाधान के साथ समस्या यह है कि यदि आप 'रेक डीबी: बीज' एक सेकेंड चलाते हैं समय, आपको डुप्लिकेट का एक गुच्छा मिलेगा। विशिष्टता के लिए आवश्यकताओं के आधार पर, आप शायद आखिरी पंक्ति को कुछ ऐसा करने के लिए संशोधित करना चाहेंगे जैसे: config.each {| values | Category.first_or_create (मान)} ' – sberkley
आप किस स्थिति में डेटाबेस को दो बार बीज करना चाहते हैं? 'रेक डीबी: रीसेट' आपको 99% समय की आवश्यकता है। – Zaz
यदि आप तालिका में नए बीज वाले मान जोड़ते हैं या बीजित मानों के साथ एक नई तालिका जोड़ते हैं। पूरे डेटाबेस को छोड़ना विकास वातावरण में एक समाधान हो सकता है, लेकिन निश्चित रूप से उत्पादन में नहीं है। पुन: बीजिंग से पहले बीज की मेज को छोड़ना भी एक विकल्प नहीं है यदि किसी तालिका में उस तालिका के आईडी के संदर्भ हैं। यदि आपको पहले बीजित मूल्यों को हटाने की आवश्यकता है तो स्थिति और भी जटिल हो जाती है और 'रेक डीबी: बीज' से परे समाधान की आवश्यकता हो सकती है। – sberkley
मैंने उत्तर @Zaz का उत्तर दिया। ये अच्छी तरह काम करता है।
लेकिन इस बीच यदि आपके बीज डेटा में कुछ गड़बड़ हुई (उदाहरण के लिए आपके पास बहुत बड़ी बीज यामल फ़ाइल है), तो आप जानना चाहेंगे कि आपके यम का कौन सा हिस्सा गलत हो गया था। उस समय आप बनाने के बाद एक ब्लॉक जोड़ सकते हैं! इस तरह डिबग के लिए:
seed_file = Rails.root.join('db', 'seeds', 'categories.yml')
config = YAML::load_file(seed_file)
counter = 0
Category.create!(config) do |c|
puts "Create category #{counter += 1} with name: #{c.name}"
end
- 1. वाईएएमएल फ़ाइल में JSON डेटा एम्बेड करना
- 2. रेल पर रूबी:
- 3. रूबी रेल - डेटा बेस
- 4. रेल 3: विकास डेटाबेस से बीज डेटा बनाएं
- 5. वाईएएमएल फ़ाइल में रेल सिंटैक्स त्रुटि?
- 6. रेल पर रूबी:: submodels
- 7. रेल माइग्रेशन: डिफ़ॉल्ट डेटा लोड करें
- 8. रेल पर रूबी: आईआरबी
- 9. रेल पर रूबी AJAX फ़ाइल अपलोड
- 10. रूबी: फ़ाइल से हैश कैसे लोड करें?
- 11. रूबी बनाम रूबी रेल पर
- 12. रेल पर रूबी - लेआउट
- 13. रेल पर रूबी
- 14. रेल साइडकीक पर मोनिट रूबी
- 15. रेल पर रूबी
- 16. रेल पर रूबी में मैं
- 17. बीज डेटा के बिना सेटअप डेटाबेस
- 18. वाईएएमएल :: लोड अपरिभाषित वर्ग/मॉड्यूल त्रुटि
- 19. रनिंग रेक डीबी: बीज बीज से लोड नहीं हो रहा है। आरबी
- 20. पाइथन बनाम रेल पर रूबी
- 21. आईआईएस पर रेल पर रूबी?
- 22. रेल रिपोर्टिंग टूल पर रूबी?
- 23. रेल पर उत्पन्न रूबी
- 24. रेल पर रूबी
- 25. रेल पर रूबी: स्ट्रिंग
- 26. ककड़ी परीक्षणों में बीज डेटा
- 27. रेल पर रूबी अद्वितीय
- 28. रेल पर रूबी: पथ
- 29. रेल पर रूबी धीमी है ...?
- 30. रेल पर डॉक्सप्लिट रूबी
देखकर के रूप में स्वीकार जवाब महान नहीं है ('परीक्षा /' निर्देशिका में बीज डेटा डालता है), और [मेरा उत्तर] (http://stackoverflow.com/a/24957205/405550) में काफी अधिक वृद्धि हुई है, क्या आप कृपया मेरा स्वीकार करने पर विचार करेंगे? – Zaz