Was macht Rake db: test: vorbereiten eigentlich?

124

Ich verfolge die Rails-Tutorial-Videos und kann nicht herausfinden, was der db:test:prepareBefehl tatsächlich tut. Kann jemand eine Erklärung geben?

benc
quelle

Antworten:

119

Die obige Rake-Datenbank: migrate führt alle ausstehenden Migrationen in der Entwicklungsumgebung aus und aktualisiert db / schema.rb. Der Rake db: test: load erstellt die Testdatenbank aus der aktuellen db / schema.rb neu. Bei nachfolgenden Versuchen empfiehlt es sich, zuerst db: test: prepare auszuführen, da zunächst nach ausstehenden Migrationen gesucht und Sie entsprechend gewarnt werden.

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

Grundsätzlich wird das Klonen der Datenbank behandelt, sodass Sie die Migrationen nicht gegen Test ausführen müssen, um die Testdatenbank zu aktualisieren.

Richard Brown
quelle
19
rake db:test:prepareist jetzt veraltet.
Jngai1297
3
obige URL ist tot, dies wäre die neue github.com/rails/rails/blob/4-1-stable/activerecord/…
Riffraff
12
und es ist zurück github.com/rails/rails/commit/…
fenec
4
@ Jngai1297 Nicht mehr!
Phillipp
1
@Phillipp noch einmalguides.rubyonrails.org/v5.0/…
Yozzz
42

Im Einzelnen rake db:test:preparewird Folgendes ausgeführt:

  • Suchen Sie nach ausstehenden Migrationen und,
  • Laden Sie das Testschema

Das heißt, Ihre db/schema.rbDatei wird überprüft , um festzustellen, ob in Ihrem Projekt vorhandene Migrationen vorhanden sind, die nicht ausgeführt wurden. Angenommen, es sind keine Migrationen ausstehend, wird die Datenbank geleert und basierend auf dem Inhalt der db/schema.rbDatei neu geladen.

Kevin Bedell
quelle
2

rake db: test: Vorbereitung ist eine gute Lösung für PG Fragen wie diese .

"PG :: UndefinedTable: ERROR: Relation existiert nicht" mit korrekter Rails-Benennung und -Konvention "wo ich nicht einfach ausführen konnte rake db:migrate RAILS_ENV=production

Wenn Sie beispielsweise keine Testdatenbank für einen hier beschriebenen Fehler erstellen können : "Benutzer mit nicht definierbarer PG-Fehlerbeziehung existieren nicht."

Alle um diesen Fehler herum "PG :: UndefinedTable: ERROR: Relation xxxxx existiert nicht"

Albert Català
quelle