2013-08-12 12 views
59

Utilizzo la console di rails nell'ambiente di sviluppo e voglio utilizzare le factory. Come posso accedervi?Come utilizzare le factory da FactoryGirl nella console di rails

ho cercato require "FactoryGirl" che restituisce

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

[A] (https://coderwall.com/p/4ion2q) [semplice] (http: // www.neevtech.com/blog/2012/09/27/factory-girl-with-test-console/) [google] (http://www.particlewave.com/2012/07/14/using-factorygirl-with-the -rails-console /) la ricerca porta a diversi risultati. Hai provato questi? Non stanno lavorando? Cosa hai provato fino ad ora? – wpp

+0

Questi sono tutti in prova, voglio farlo in fase di sviluppo –

+0

che probabilmente vorrai iniziare con una richiesta 'factory_girl' piuttosto che richiedere la costante FactoryGirl. –

risposta

34

per risolvere questo problema in modo che la gemma fabbrica bot è specificata nel vostro Gemfile simile a questo

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

Poi bundle install.

Questo dovrebbe rendere disponibile la classe FactoryBot nella console di sviluppo.

Spero che questo aiuti.

+2

Aggiungere FactoryGirl in gemfile come questo invece di 'gem 'factory_girl_rails',: require => false' genererà errori per chiunque cerchi di configurare da zero l'ambiente di sviluppo, fai attenzione. – Epigene

+3

Questa risposta funziona, ma la risposta accettata dovrebbe essere 'rails console test', ti permetterà di creare una console nell'ambiente di test in modo da non dover aggiornare il tuo Gemfile per usare un pacchetto di test nell'ambiente di sviluppo –

19

È necessario require 'factory_girl_rails', che è il vero gioiello che viene utilizzato da Rails. Questa gemma includerà la libreria Factory Girl, rendendo disponibile FactoryGirl.

È possibile eseguire questa operazione o aggiornare il file Gem per richiederlo all'avvio come nella risposta di muttonlamb.

123

faccio questo modo seguente:

  • Avviare la console di rotaie in ambiente di test in modalità sandbox.

    rails console test --sandbox 
    

avete bisogno di questo per due motivi:

  1. Tutte le modifiche non vengono annullate.
  2. Se si dispone già di dati seme, è possibile che le fabbriche avviino la serializzazione degli attributi da 1, ma questi record potrebbero già esistere.

Poi nella console:

  • Richiede FactoryBot (è stato chiamato factorygirl):

    require 'factory_bot' 
    
  • Caricare le definizioni di fabbrica:

    FactoryBot.find_definitions 
    
  • Includere il FactoryBot metodi per evitare prefi xing tutte le chiamate a FB con FactoryBot (create anziché FactoryBot.create):

    include FactoryBot::Syntax::Methods 
    

P.S. Per fabrication gem è possibile caricare le definizioni nella console rotaie con:

Fabrication.manager.load_definitions 

anche require 'faker' se lo si utilizza.

+0

che l'ultima riga 'richiede' ffaker''? – Dihedral

+0

Dipende da quale gemma si usa - falso o ffaker, ma sono d'accordo sul fatto che ultimamente ffaker sia più ampiamente usato. –

+0

Ho riscontrato un problema non definito problema 'fixture_file_upload', causato dall'assenza del modulo' ActionDispatch :: TestProcess', quindi potresti considerare di includerlo anche – divideByZero

Problemi correlati