Que fait réellement rake db: test: prepare?

124

Je suis les vidéos du tutoriel sur les rails et je ne peux pas comprendre ce que db:test:preparefait réellement la commande. Quelqu'un peut-il fournir une explication?

benc
la source

Réponses:

119

Le rake db: migrate ci-dessus exécute toutes les migrations en attente sur l'environnement de développement et met à jour db / schema.rb. Le rake db: test: load recrée la base de données de test à partir du db / schema.rb actuel. Lors des tentatives suivantes, il est conseillé d'exécuter d'abord db: test: prepare, car il vérifie d'abord les migrations en attente et vous avertit de manière appropriée.

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

Fondamentalement, il gère le clonage de la base de données afin que vous n'ayez pas à exécuter les migrations contre test pour mettre à jour la base de données de test.

Richard Brown
la source
19
rake db:test:prepareest désormais obsolète.
Jngai1297
3
ci - dessus url est mort, ce serait le nouveau github.com/rails/rails/blob/4-1-stable/activerecord/...
riffraff
12
et il est de retour github.com/rails/rails/commit/…
fenec
4
@ Jngai1297 Plus maintenant!
Phillipp
1
@Phillipp encore une fois guides.rubyonrails.org/v5.0/…
yozzz
42

Plus précisément, rake db:test:preparefera ce qui suit:

  • Vérifiez les migrations en attente et,
  • charger le schéma de test

Autrement dit, il examinera votre db/schema.rbfichier pour déterminer si des migrations qui existent dans votre projet n'ont pas été exécutées. En supposant qu'il n'y a pas de migrations en cours, il videra alors la base de données et la rechargera en fonction du contenu du db/schema.rbfichier.

Kevin Bedell
la source
2

rake db: test: prepare est une bonne solution pour les problèmes de PG comme celui-ci .

"PG :: UndefinedTable: ERROR: la relation n'existe pas" avec un nom et une convention Rails corrects "où je ne pouvais pas simplement exécuter rake db:migrate RAILS_ENV=production

Lorsque, par exemple, vous ne pouvez pas créer de base de données de test pour un bogue discuté ici : "Les utilisateurs de relation d'erreur PG undefinedtable n'existe pas"

Tout autour de cette erreur "PG :: UndefinedTable: ERROR: la relation xxxxx n'existe pas"

Albert Català
la source