Est-ce une bonne idée de mettre db/schema.rb pour .gitignore liste ??
donc, ce que je suggère dans mon travail, est de mettre db/schema.rb dans .gitignore fichier, de sorte que nous n'avons pas (en tout temps) la fusion des problèmes.
Il y a quelques préoccupations que si quelque chose de terrible arrive (météore tombé du ciel à droite sur le serveur de base de données et simultanément tous les db/migrete fichiers sont corrompus) nous pourrions perdre le schéma, et nous aurons à utiliser rake db:purge (pour réutiliser le schéma.rb). Je suis d'accord que c'est possible et c'est un bon argument, mais il ne devrait pas être un problème parce que db/schema.rb est généré chaque fois que nous ne rake db:migrate. Donc, même si nous ne pousserons pas de schéma.rb sur le serveur, nous repoussons les migrations ajouter de course db:migrate chaque fois que nous déployons avec DB changements et avec cette db:migrate rails de générer automatiquement un schéma.rb sur le côté serveur, et que le schéma.rb se trouve sur le serveur inchangée jusqu'à nous faire un autre db:migrate .
ainsi quel est votre avis, doit-on ou ne doit-on pas mettre la db/schema.rb dans le dépôt git d'ignorer ?
merci
- double possible de Quelle est la bonne approche pour traiter les Rails db/schema.rb fichier GIT?
- Mince, j'étais assez fier de ma réponse 🙂
- désolé mais le lien est trop convaincant 🙁 , mais je vous remercie pour l'aide
Vous devez vous connecter pour publier un commentaire.
Je suggère toujours de garder le schéma.rb dans la version contol, depuis des tâches comme la rake db:schéma:charge en dépendent d'être là.
Sur les conflits, parlez-vous de la version du schéma de conflits? Ceux-ci sont facilement atténués à l'aide de l'algorithme de fusion a montré ici: http://tbaggery.com/2010/10/24/reduce-your-rails-schema-conflicts.html
D'autres conflits, comme la définition de la colonne de commutation emplacements peuvent facilement être évités en faisant attention à ce que vous vous engagez dans le référentiel.
Vous devriez mettre dans un CV tout ce que vous devez reproduire un environnement opérationnel.
Si, pour la reconstruction de votre application, vous devez avoir le droit
schema.rb
(à la bonne version), alors oui, il peut être versionned.Mais si vous pouvez l'obtenir en arrière par un autre processus, alors il est préférable de sauvegarder via certains autres référentielle qu'un VCS.
schema.rb
est nécessaire.Lorsque vous basculez entre les branches qui se développent à différents types d'attributs, sans schéma.rb-vous parfois besoin de:
rake db:migrate:down VERSION=xxx
des migrations qui ont été créer il y a quelques temps, mais pas fusionné à d'autres branchesgit checkout branch
rake db:migrate
migrer toutes les nouvelles branchesJe rencontre quelques problèmes avec ce dans des projets antérieurs, où schéma.rb a été dans .gitignore. Chaque fois que je vois quelque chose n'allait pas, j'ai dû abandonner la base de données et de recréer des migrations, tandis qu'avec le schéma.rb seulement je pouvais charger schéma en une fraction de seconde et puis
rake db:seed
pour charger les données. Mais ce n'était pas grave.Je suis aussi curieux de voir quels sont les problèmes que vous avez avec la fusion de schéma.rb? La plupart du temps, vous pouvez remplacer ce fichier sans vous soucier des changements (je suppose que vous n'avez pas modifié votre structure de base de données par part) avec
rake db:dump
et il suffit de l'ajouter en tant que fusion de résolution.