¿Qué hace realmente rake db: test: prepare?

124

Estoy siguiendo los videos tutoriales de rails y no puedo entender qué db:test:preparehace realmente el comando. ¿Alguien puede dar una explicación?

benc
fuente

Respuestas:

119

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.

Richard Brown
fuente
19
rake db:test:prepareahora está en desuso.
Jngai1297
3
la URL anterior está muerta, esta sería la nueva github.com/rails/rails/blob/4-1-stable/activerecord/…
riffraff
12
y está de vuelta github.com/rails/rails/commit/…
fenec
44
@ Jngai1297 ¡Ya no más!
Phillipp
1
@Phillipp una vez más guides.rubyonrails.org/v5.0/…
yozzz
42

Específicamente, rake db:test:preparehará lo siguiente:

  • Verifique si hay migraciones pendientes y,
  • cargar el esquema de prueba

Es decir, buscará su db/schema.rbarchivo 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.rbarchivo.

Kevin Bedell
fuente
2

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”

Albert Català
fuente