Co właściwie robi rake db: test: preparat?

124

Śledzę filmy instruktażowe dotyczące szyn i nie mogę dowiedzieć się, co db:test:preparefaktycznie robi polecenie. Czy ktoś może udzielić wyjaśnienia?

benc
źródło

Odpowiedzi:

119

Rake db: migrate powyżej uruchamia wszystkie oczekujące migracje w środowisku programistycznym i aktualizuje plik db / schema.rb. Rake db: test: load odtwarza testową bazę danych z aktualnego db / schema.rb. Przy kolejnych próbach dobrze jest najpierw uruchomić db: test: ready, ponieważ najpierw sprawdza, czy nie ma oczekujących migracji i odpowiednio ostrzega.

- http://guides.rubyonrails.org/testing.html

Zasadniczo obsługuje klonowanie bazy danych, więc nie musisz uruchamiać migracji na podstawie testu, aby zaktualizować testową bazę danych.

Richarda Browna
źródło
19
rake db:test:preparejest teraz przestarzała.
Jngai1297
3
powyższy adres URL jest martwy, to będzie nowy github.com/rails/rails/blob/4-1-stable/activerecord/…
riffraff
4
@ Jngai1297 Już nie!
Phillipp,
1
@Phillipp one more time guide.rubyonrails.org/v5.0/ ...
yozzz
42

W szczególności rake db:test:preparewykona następujące czynności:

  • Sprawdź oczekujące migracje i
  • załaduj schemat testu

Oznacza to, że będzie sprawdzać db/schema.rbplik, aby określić, czy w projekcie istnieją migracje, które nie zostały uruchomione. Zakładając, że nie ma żadnych zaległych migracji, opróżni bazę danych i załaduje ją ponownie na podstawie zawartości db/schema.rbpliku.

Kevin Bedell
źródło
2

rake db: test: przygotować to dobre rozwiązanie dla kwestii PG jak ten .

„PG :: UndefinedTable: ERROR: relacja nie istnieje” z poprawnym nazewnictwem i konwencją Railsów „gdzie nie mogłem po prostu wykonać rake db:migrate RAILS_ENV=production

Na przykład, gdy nie można utworzyć testowej bazy danych dla omawianego tutaj błędu : „PG undefinedtable error relacja użytkowników nie istnieje”

Cały wokół tego błędu „PG :: UndefinedTable: ERROR: relacja xxxxx nie istnieje”

Albert Català
źródło