2013-03-02 20 views

Antwort

98

The rake db:migrate above runs any pending migrations on the development environment and updates db/schema.rb. The rake db:test:load recreates the test database from the current db/schema.rb. On subsequent attempts, it is a good idea to first run db:test:prepare, as it first checks for pending migrations and warns you appropriately.

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

Grundsätzlich behandelt es die Datenbank klonen, so dass Sie die Testdatenbank nicht über die Migrationen gegen Test ausführen müssen, um zu aktualisieren.

+0

Perfect „PG :: UndefinedTable: eRROR Beziehung xxxxx existiert nicht“, danke! – bengem

+17

'Rake db: test: prepare' ist jetzt veraltet. – Jngai1297

+3

über url tot ist, würde dies die neue https://github.com/rails/rails/blob/4-1-stable/activerecord/CHANGELOG.md#rails-410-april-8-2014 sein – riffraff

32

Insbesondere wird tun rake db:test:prepare folgendes:

  • prüfen anstehenden Migrationen und
  • und laden Sie das Testschema

Das heißt, es wird Ihre db/schema.rb Datei aussehen, wenn zu bestimmen, alle Migrationen in Ihrem Projekt, die noch nicht ausgeführt wurden. Angenommen, es gibt keine ausstehenden Migrationen, wird die Datenbank leer geladen und basierend auf dem Inhalt der Datei db/schema.rb neu geladen.

2

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

„PG :: UndefinedTable: ERROR: Beziehung existiert nicht“ mit einem korrekten Rails Benennung und Konvention“, wo ich konnte nicht einfach rake db:migrate RAILS_ENV=production

ausführen Wenn zum Beispiel Sie nicht Testdatenbank für ein erstellen Fehler diskutiert here: "PG undefinedtable Fehler Beziehung Benutzer existiert nicht"

Alle arround diesen Fehler

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile zu integrieren der Antwort hier und stellen Sie den Link als Referenz zur Verfügung. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. – Patrick

+0

Sorry, mit Erklärungen bearbeitet –