web-dev-qa-db-fra.com

Comment utiliser les usines de FactoryGirl dans la console Rails

J'utilise la console Rails dans l'environnement de développement et je souhaite utiliser des usines. Comment puis-je y accéder?

J'ai essayé require "FactoryGirl" qui renvoie

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

Pour résoudre ce problème, assurez-vous que la gemme du bot d'usine est spécifiée dans votre Gemfile de la même manière.

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

Ensuite bundle install.

Cela devrait rendre la classe FactoryBot disponible dans la console de développement.

J'espère que cela t'aides.

37
muttonlamb

Je le fais de la manière suivante:

  • Démarrez la console Rails dans l'environnement de test en mode sandbox).

    Rails console test --sandbox
    

Vous en avez besoin pour deux raisons:

  1. Toutes les modifications que vous apportez sont annulées.
  2. Si vous avez déjà des données de départ, il se peut que les usines démarrent la sérialisation des attributs à partir de 1, mais ces enregistrements peuvent déjà exister.

Puis dans la console:

  • Nécessite FactoryBot (s'appelait FactoryGirl):

    require 'factory_bot'
    
  • Chargez les définitions d'usine:

    FactoryBot.find_definitions
    
  • Incluez les méthodes FactoryBot pour éviter de préfixer tous les appels à FB avec FactoryBot (create au lieu de FactoryBot.create):

    include FactoryBot::Syntax::Methods
    

P.S. Pour fabrication gem vous pouvez charger les définitions dans la console Rails avec:

Fabrication.manager.load_definitions

Également require 'faker' si vous l'utilisez.

166
Alex Popov

Tu dois require 'factory_girl_Rails', qui est le véritable joyau utilisé par Rails. Ce joyau comprendra la bibliothèque Factory Girl, rendant FactoryGirl disponible.

Vous pouvez le faire ou mettre à jour votre Gemfile pour l'exiger au démarrage comme dans la réponse de muttonlamb.

20
Robin Daugherty