2011-09-23 4 views
3

J'ai un db de production, que je prépare avecComment db: migrer après db: schéma: charge

rake db:create db:schema:load db:seed 

Je ajoute aussi les migrations, lors de la livraison de mon produit, de sorte que les installations existantes peuvent être mises à jour. Après le schéma: load seule la version de la dernière migration est stockée dans schema_migrations, donc quand j'exécute db: migrate, le migrator essaie d'exécuter toutes les autres migrations qui ne sont pas encore dans schema_migrations.

Existe-t-il un bon moyen, pour faire face à cela, qui ne nécessite pas de moi, de réduire les migrations (parce que c'est malheureusement hors de question - tout comme db: migrer comme étape de préparation)?

Répondre

2

Il suffit de ne pas db: schéma: charge, passer les migrations à la place:

rake db:create db:migrate db:seed 

S'il vous plaît garder à l'esprit que dans les grands projets/Passe longue migrations est une dure. Vous devriez tru pour garder votre seeds.rb mis à jour et vous utiliser de façon. Les migrations anciennes ont tendance à échouer en raison de changements de modèles incompatibles (par rapport aux anciennes migrations) à mesure que le projet évolue.

+0

Vous avez raison, il est difficile de faire fonctionner les anciennes migrations. Avec l'âge et la taille de ce projet, malheureusement, nous ne pouvons pas passer le temps nécessaire pour les faire fonctionner à nouveau. C'est pourquoi dans la dernière phrase que j'ai mentionnée, db: migrate n'est pas une option. – CMW

+0

Désolé, je n'ai pas eu raison. En fait, dans mes projets, db: reset n'a pas fait repasser les anciennes migrations. Eh bien, j'ai déjà eu un très vieux projet, évoluant depuis les rails 2. *, où je viens de supprimer toutes les anciennes migrations, et je n'ai eu aucun problème avec ça. Git gardera la trace juste au cas où;) – sergeych