web-dev-qa-db-fra.com

Quelle est la bonne approche pour traiter le fichier Rails db/schema.rb dans GIT?

Devrions-nous inclure schema.rb lorsque nous nous engageons dans GIT? ou devrions-nous l'ignorer? Quelle est la bonne approche?

38
rubyprince

Eh bien, le fichier schema.rb standard de Rails 2 se trouve à la fin du bloc de commentaires en haut du fichier:

# It's strongly recommended to check this file into your version control system.

Le Rails 3 schema.rb que j’ai lancé dit la même chose. Je pense que le commentaire dit tout.


Mise à jour en réponse aux commentaires: .__ Oui, des erreurs peuvent être commises et vous pouvez provoquer des modifications contradictoires et des bugs peuvent altérer votre schema.rb, mais c’est pourquoi vous souhaitez le contrôler sous révision, ce contrôle vous permet sauvegarde en cas de besoin. Il n'y a qu'une chose dans votre arborescence de sources qui spécifie votre schéma de base de données: schema.rb. Votre schéma de base de données est absolument un artefact critique et tout élément important doit faire l'objet d'un suivi dans le contrôle de révision.

Tous les problèmes de mise à jour/fusion avec schema.rb doivent être résolus en triant simplement vos migrations en conflit afin que schema.rb soit corrigé en tant qu'effet secondaire de la résolution du problème réel.

Oui, schema.rb est un fichier généré, mais il est généré uniquement dans le sens où votre éditeur de texte génère votre fichier de modèle pancakes.rb ou un fichier d'échafaudage non modifié est généré.

Oui, vous pouvez reconstruire votre fichier schema.rb en créant une nouvelle base de données, puis en exécutant toutes vos migrations. Cependant, vous devriez vider vos anciennes migrations de temps en temps pour éviter d'avoir à vérifier des centaines de fichiers de migration chaque fois que vous rake db:migrate, de sorte que "reconstruire et exécuter toutes les migrations" ne soit souvent pas une option dans un projet très actif.

61
mu is too short

Oui. Le fichier de schéma est utilisé pour configurer votre base de données lorsque vous utilisez rake db: reset et d'autres commandes. Les migrations ne doivent être utilisées que lors de la modification du schéma de base de données et aboutissent toujours à un nouveau fichier de schéma.

1
askegg

Eh bien, il n’est pas inclus dans .gitignore par défaut. Donc, je pense que vous n'auriez pas de problème à l'inclure (je le fais dans mes projets, sans aucun problème).

1
Spyros

Je ne commets pas ce fichier dans Git, car il se crée lorsque je lance rake db:migrate.

Si je commets ce fichier dans Git, je ne peux pas extraire les nouvelles modifications du serveur après chaque db:migrate.

0
demas