Respuestas:
El rastrillo db: migrate anterior ejecuta cualquier migración pendiente en el entorno de desarrollo y actualiza db / schema.rb. El rastrillo db: test: load recrea la base de datos de prueba del db / schema.rb actual. En intentos posteriores, es una buena idea ejecutar primero db: test: prepare, ya que primero busca las migraciones pendientes y le advierte adecuadamente.
- http://guides.rubyonrails.org/testing.html
Básicamente maneja la clonación de la base de datos para que no tenga que ejecutar las migraciones contra prueba para actualizar la base de datos de prueba.
Específicamente, rake db:test:prepare
hará lo siguiente:
Es decir, buscará su db/schema.rb
archivo para determinar si hay migraciones que existan en su proyecto que no se hayan ejecutado. Suponiendo que no hay migraciones pendientes, vaciará la base de datos y la volverá a cargar en función del contenido del db/schema.rb
archivo.
rake db: test: prepare es una buena solución para problemas de PG como este .
"PG :: UndefinedTable: ERROR: la relación no existe" con un nombre y una convención de Rails correctos "donde no podía simplemente ejecutar rake db:migrate RAILS_ENV=production
Cuando, por ejemplo, no puede crear una base de datos de prueba para un error discutido aquí : "No existen usuarios de relación de error indefinible de PG"
Todo sobre este error "PG :: UndefinedTable: ERROR: la relación xxxxx no existe”
rake db:test:prepare
ahora está en desuso.