2009-09-18 3 views
0

Il y a environ une centaine de migrations dans mon dossier migrate avec des préfixes numériques, puis une centaine avec des préfixes d'horodatage, donc je suppose qu'à un moment donné la version de Rails a été mise à jour. Maintenant, je veux arrêter Rails d'utiliser les préfixes d'horodatage comme je préfère les préfixes numériques. Quel est le meilleur moyen d'y parvenir, ou est-ce possible? Une approche possible consiste à renommer manuellement les préfixes dans leur ordre de tri, puis à accéder aux bases de données de développement, de mise en scène et de production et à modifier les horodatages par les nouveaux numéros, mais cette approche semble désordonnée. Y a-t-il un autre moyen d'accomplir cela?Puis-je empêcher Rails d'utiliser un préfixe d'horodatage pour les migrations après que certaines migrations ont été générées à l'aide d'horodatages?

Répondre

2

Les migrations horodatées sont géniales si vous avez une équipe, ou si vous voulez vous brancher et travailler sur autre chose. Cependant, vous pouvez modifier la façon dont les migrations sont nommées avec un paramètre de configuration.

#environment.rb 
config.active_record.timestamped_migrations = false 

également .... le plugin lazy_developer Je maintiens a une tâche de transformer tous vos fichiers de migration dans une migration flambant neuf. Je ne donne aucune garantie que cela fonctionnera pour vous, mais je l'ai utilisé sur quelques projets pour obtenir les choses où je veux qu'ils soient.

http://github.com/napcs/lazy_developer

Il faut essentiellement schema.rb et fait une nouvelle migration de celui-ci. Il essaie également de gérer vos index, mais il utilise un horodatage pour le numéro de migration, en définissant la nouvelle migration qu'il crée avec le même nom que la dernière migration afin que le contrôle de version de votre base de données soit correctement géré.

Encore une fois, aucune garantie ne fonctionnera, alors sauvegardez ou branchez votre projet en premier! Si j'étais vous, je laisserais ça tranquille. C'est une convention d'avoir les noms de migration, et vraiment, il suffit de les utiliser au plus une fois. Si vous vous déployez sur un nouveau serveur ou que vous vérifiez le projet sur une nouvelle machine, vous devriez vraiment utiliser rake db: schema: load à la place car c'est beaucoup plus rapide. Les migrations sont destinées au développement et aux changements incrémentaux de base de données. Et comme je l'ai dit, les migrations horodatées basculent pour plusieurs utilisateurs.

Questions connexes