Gestion de la cohérence des migrations Rails 5 en utilisant des branches Git

Nous nous sommes posés la question théorique suivante : que se passe t-il si une branche master, représentant le site de production, continue d’évoluer en parallèle d’une branche de développement, représentant un site de démonstration de fonctionnalités ?

Est-ce que le framework Rails serait capable de retrouver la cohérence entre des migrations en se basant sur leurs timestamp de génération, sachant que tous les fichiers du dossier db/ sont correctement rassemblés lors des merges, mais que le schema.rb perd l’information des champs ajoutés en base au fur et à mesure ?

Nous avons tenté l’expérience, voici notre retour :

1. Pour mettre la branche dev sur la branche master, on commence par merger master dans dev pour que les conflits aient lieu en dev.

Lors d’un conflit de schema.rb, conserver toujours la migration la plus ancienne :

Après conflit, il doit rester ceci :

2. On applique ce nouveau schema.rb sur la branche dev avec l’habituel rake db:migrate et on observe la réécriture du schema.rb :

3. On va sur la branche master et on merge dev dans master. Normalement, on est content.

2 réflexions au sujet de « Gestion de la cohérence des migrations Rails 5 en utilisant des branches Git »

  1. Salut Vincent, tu peux avoir la même chose en faisant un git rebase master depuis ta branche de dev. Ça permet de garder un historique plus propre. Sinon les images de l’article ne fonctionnent pas.

    1. D’accord. Concernant les images, as tu encore le problème ce matin ? Depuis mon ADSL (Firefox) et ma 3G (un nav webkit), je n’ai aucun soucis.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.