Cosa fa effettivamente rake db: test: prepare?


124

Sto seguendo i video tutorial di rails e non riesco a capire cosa db:test:preparefa effettivamente il comando. Qualcuno può fornire una spiegazione?

Risposte:


119

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.


19
rake db:test:prepareè ora deprecato.
Jngai1297

3
l'URL sopra è morto, questo sarebbe il nuovo github.com/rails/rails/blob/4-1-stable/activerecord/…
riffraff


4
@ Jngai1297 Non più!
Phillipp

1
@Phillipp ancora una volta guides.rubyonrails.org/v5.0/…
yozzz

42

Nello specifico, rake db:test:preparefarà quanto segue:

  • Verifica la presenza di migrazioni in sospeso e,
  • caricare lo schema di test

Cioè, esaminerà il tuo db/schema.rbfile 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.rbfile.


2

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"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.