¿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?

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.


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


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.


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”

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.