Ik gebruik de rails-console in de ontwikkelomgeving en ik wil fabrieken gebruiken. Hoe kan ik er toegang toe krijgen?
Ik heb geprobeerd require "FactoryGirl"
wat teruggeeft
1.9.3p393 :301 > require "FactoryGirl"
LoadError: cannot load such file -- FactoryGirl
Antwoord 1, autoriteit 100%
Ik doe dit op de volgende manier:
-
Start de railconsole in de testomgeving in sandbox-modus.
rails console -e test --sandbox
Je hebt dit om twee redenen nodig:
- Alle wijzigingen die u aanbrengt, worden teruggedraaid.
- Als je al wat seed-gegevens hebt, kan het gebeuren dat de fabrieken beginnen met de serialisatie van attributen vanaf 1, maar deze records kunnen al bestaan.
Vervolgens in de console:
-
FactoryBot (werd FactoryGirl genoemd):
require 'factory_bot'
-
Laad de fabrieksdefinities:
FactoryBot.find_definitions
-
Voeg de FactoryBot-methoden toe om te voorkomen dat alle oproepen naar FB worden voorafgegaan door
FactoryBot
(create
in plaats vanFactoryBot.create
):include FactoryBot::Syntax::Methods
P.S. Voor fabrication gemkun je de definities in de rails console laden met:
Fabrication.manager.load_definitions
Ook require 'faker'
als je het gebruikt.
Antwoord 2, autoriteit 18%
Om dit probleem op te lossen, moet u ervoor zorgen dat de fabrieksbot-edelsteen is opgegeven in uw Gemfile, vergelijkbaar met deze
group :development, :test do
gem 'factory_bot_rails'
end
Vervolgens bundle install
.
Dit zou de FactoryBot-klasse beschikbaar moeten maken in de ontwikkelconsole.
Hopelijk helpt dit.
Antwoord 3, autoriteit 12%
Je moet require 'factory_bot_rails'
nodig hebben, wat de eigenlijke edelsteen is die door Rails wordt gebruikt. Dat juweeltje bevat de Factory Bot-bibliotheek, waardoor FactoryBot
beschikbaar wordt.
Je kunt dit doen, of je Gemfile bijwerken om het bij het opstarten te vereisen, zoals in het antwoord van muttonlamb.
Antwoord 4, autoriteit 2%
Als je het elke keer dat je de console start beschikbaar wilt hebben, kun je dit stukje code bovenaan je config/environments/development.rb toevoegen:
require 'factory_bot_rails'
require 'faker' # if you're also using faker gem
require 'rails/console/helpers'
Rails::ConsoleMethods.prepend(FactoryBot::Syntax::Methods)
Je kunt nu de ingebouwde helpers direct na het starten van de console gebruiken, bijvoorbeeld:
company = create(:company)