Antworten:
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.
Im Einzelnen rake db:test:prepare
wird Folgendes ausgeführt:
Das heißt, Ihre db/schema.rb
Datei 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.rb
Datei neu geladen.
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"
rake db:test:prepare
ist jetzt veraltet.