Sie müssen zugeben, dass für einen Neuling in Schienen und Datenbanken die offizielle Erklärung auf rubyonrails.org alle vier dieser Aufgaben genau gleich klingen lässt. Zitat:
rake db:test:clone Recreate the test database from
the current environment’s database schema
rake db:test:clone_structure Recreate the test database from the
development structure
rake db:test:load Recreate the test database from the current schema.rb
rake db:test:prepare Check for pending migrations and load the test schema
Ich kenne nicht einmal den Unterschied zwischen Struktur und Schema. Und was ist der Unterschied zwischen dem Laden des Schemas der aktuellen Umgebung und dem Laden von schema.rb?
Wie ähnlich (oder unterschiedlich) sind diese Aufgaben?
quelle
Sie sind eigentlich nicht ganz dasselbe. Alle Aufgaben, die das Wort "Schema" enthalten, wirken sich auf die Datei ... / db / schema.rb aus. schema.rb ist effektiv der Status Ihres Schemas, nachdem alle Migrationen angewendet wurden. Es kann ausgeführt werden, um Ihr Schema wiederherzustellen, anstatt alle Datenbankmigrationen auszuführen (was bei vielen Migrationen lange dauern kann).
Alle Aufgaben mit dem Wort 'Struktur' wirken sich auf die Datei {Rails.env} _structure.sql aus. Diese Datei wird verwendet, wenn Ihr Schema Konstrukte enthält, die nicht in der Datei schema.rb ausgedrückt werden können. Zum Beispiel, wenn Sie Funktionen verwenden, die für ein bestimmtes RDBMS spezifisch sind. Im Hintergrund erstellt Rails diese Datei mit dem für Ihr RDBMS geeigneten Schema-Dump-Dienstprogramm. Um das Schema wiederherzustellen, liest es die Datei ein und führt die SQL-Anweisungen erneut mit einem RDBMS-spezifischen Tool aus.
Rails weiß, ob die Route schema.rb oder die Route struct.sql verwendet werden soll, je nachdem, ob Sie sie festgelegt haben oder nicht
config.active_record.schema_format =: sql
in Ihrer ... / config / application.rb
quelle