Risposte:
Il rake db: migrate sopra esegue tutte le migrazioni in sospeso sull'ambiente di sviluppo e aggiorna db / schema.rb. Il rake db: test: load ricrea il database di test dall'attuale db / schema.rb. Nei tentativi successivi, è una buona idea eseguire prima db: test: prepare, poiché prima controlla le migrazioni in sospeso e ti avvisa in modo appropriato.
- http://guides.rubyonrails.org/testing.html
Fondamentalmente gestisce la clonazione del database in modo da non dover eseguire le migrazioni su test per aggiornare il database di test.
Nello specifico, rake db:test:prepare
farà quanto segue:
Cioè, esaminerà il tuo db/schema.rb
file per determinare se eventuali migrazioni esistenti nel tuo progetto che non sono state eseguite. Supponendo che non ci siano migrazioni in sospeso, svuoterà il database e lo ricaricherà in base al contenuto del db/schema.rb
file.
rake db: test: prepare è una buona soluzione per problemi di PG come questo .
"PG :: UndefinedTable: ERROR: relation does not exist" con una denominazione e una convenzione Rails corrette "in cui non potevo semplicemente eseguire rake db:migrate RAILS_ENV=production
Quando, ad esempio, non è possibile creare un database di test per un bug discusso qui : "Gli utenti con relazioni di errore non definibili PG non esistono"
Tutto intorno a questo errore "PG :: UndefinedTable: ERROR: la relazione xxxxx non esiste"
rake db:test:prepare
è ora deprecato.