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?

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.


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

4
@ Jngai1297 Nicht mehr!
Phillipp


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.


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"

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.