Réponses:
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.
Plus précisément, rake db:test:prepare
fera ce qui suit:
Autrement dit, il examinera votre db/schema.rb
fichier 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.rb
fichier.
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"
rake db:test:prepare
est désormais obsolète.