मैं फैक्ट्रीगर्ल के कारखानों को रेल कंसोल में कैसे उपयोग करूं


91

मैं विकास के माहौल में रेल कंसोल का उपयोग कर रहा हूं और मैं कारखानों का उपयोग करना चाहता हूं। मैं उन तक कैसे पहुंच सकता हूं?

मैंने कोशिश की है require "FactoryGirl"कि कौन सा रिटर्न मिले

1.9.3p393 :301 > require "FactoryGirl"
LoadError: cannot load such file -- FactoryGirl

एक साधारण Google खोज कई परिणामों को जन्म देती है। क्या आपने ये आज़माया है? क्या वे काम नहीं कर रहे हैं? अब तक तुमने क्या प्रयास किये हैं?
डब्ल्यूपी

1
ये सभी परीक्षण में हैं, मैं इसे विकास में करना चाहता हूं
एरिक बाल्डविन

2
आप शायद FactoryGirl की आवश्यकता के बजाय 'factory_girl' की आवश्यकता के साथ शुरू करना चाहते हैं।
रॉब डॉसन

1
वर्तमान समय के लिए समायोजन - आप rails cफिर से शुरू कर सकते हैंrequire 'factory_bot'
रुडोऑनल्स

जवाबों:


39

इस समस्या को हल करने के लिए सुनिश्चित करें कि फैक्ट्री बॉट मणि आपके जेमफाइल में इसके समान निर्दिष्ट है

group :development, :test do
  gem 'factory_bot_rails'
end

तब bundle install

यह FactoryBot वर्ग को विकास कंसोल में उपलब्ध कराना चाहिए।

उम्मीद है की यह मदद करेगा।


2
इसके बजाय मणिफाइल में FactoryGirl को जोड़ने gem 'factory_girl_rails', :require => falseसे खरोंच, खबरदार से विकास के वातावरण को स्थापित करने की कोशिश करने वाले किसी भी व्यक्ति के लिए त्रुटियों को फेंक दिया जाएगा।
एपीगिन

4
यह उत्तर काम करता है, लेकिन स्वीकृत उत्तर होना चाहिए rails console test, यह आपको परीक्षण वातावरण में एक कंसोल बनाने की अनुमति देगा ताकि आपको विकास के माहौल में एक परीक्षण पैकेज का उपयोग करने के लिए अपने जेमफाइल को अपडेट करने की आवश्यकता न हो
डायलन पियर्स

197

मैं इसे निम्न तरीके से करता हूं:

  • सैंडबॉक्स मोड में परीक्षण वातावरण में रेल कंसोल को प्रारंभ करें।

    rails console -e test --sandbox
    

आपको इसकी दो वजहों से ज़रूरत है:

  1. आपके द्वारा किया गया कोई भी परिवर्तन वापस आ जाएगा।
  2. यदि आपके पास पहले से ही कुछ बीज आंकड़े हैं तो ऐसा हो सकता है कि कारखाने 1 से विशेषताओं का क्रमांकन शुरू करेंगे, लेकिन ये रिकॉर्ड पहले से मौजूद हो सकते हैं।

फिर कंसोल में:

  • FactoryBot की आवश्यकता है (जिसे FactoryGirl कहा जाता था):

    require 'factory_bot'
    
  • कारखाने की परिभाषाएँ लोड करें:

    FactoryBot.find_definitions
    
  • FB के साथ सभी कॉलों को प्रीफ़िक्स करने से बचने के लिए FactoryBot विधियाँ शामिल करें FactoryBot( createइसके बजाय FactoryBot.create):

    include FactoryBot::Syntax::Methods
    

पुनश्च निर्माण के लिए मणि आप रेल कंसोल में परिभाषाओं को लोड कर सकते हैं:

Fabrication.manager.load_definitions

इसके अलावा require 'faker'आप इसका इस्तेमाल करते हैं।


क्या वह अंतिम पंक्ति होनी चाहिए require 'ffaker'?
दीराहरल

यह निर्भर करता है कि आप किस रत्न का उपयोग करते हैं - फ़ेकर या फ़ेकर, लेकिन मैं मानता हूँ कि हाल ही में फ़ेकर अधिक व्यापक रूप से उपयोग किया जाता है।
अलेक्जेंडर

मैंने अपरिभाषित विधि fixture_file_uploadसमस्या का सामना किया है , जो ActionDispatch::TestProcessमॉड्यूल की अनुपस्थिति के कारण हुआ था , इसलिए आप इसे भी शामिल मान सकते हैं
divideByZero

1
यदि आप कंसोल को बहुत अधिक पुनरारंभ कर रहे हैं, तो यहां एक-लाइनर है:require "factory_bot_rails"; include FactoryBot::Syntax::Methods; require 'ffaker'
मिरर 318

2
रेल 6.0 के लिए कंसोल को इस तरह से चलाएं:rails c -e test --sandbox
डेविड मोरालेस

26

आपको इसकी आवश्यकता है require 'factory_bot_rails', जो वास्तविक रत्न है जिसका उपयोग रेल द्वारा किया जा रहा है। उस मणि में फैक्ट्री बॉट लाइब्रेरी शामिल होगी, जो FactoryBotउपलब्ध कराएगी ।

आप या तो ऐसा कर सकते हैं, या अपने जेमफाइल को अपडेट कर सकते हैं ताकि इसे मटनटन के उत्तर के रूप में स्टार्टअप में आवश्यकता हो।


क्योंकि मैं अपने कारखानों में Faker का उपयोग कर रहा था, मुझे भी भागना पड़ा require 'faker'
एलबर्ट्स्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.