window.pipedriveLeadboosterConfig = { base : 'leadbooster-chat.pipedrive.com', companyId : 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version : 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster existe déjà') } else { w.LeadBooster = { q : [], on : function (n, h) { this.q.push({ t : 'o', n : n, h : h }) }, trigger : function (n) { this.q.push({ t : 't', n : n }) }, } } })() Gestion de la structure des bases de données à travers plusieurs branches - The Codest
The Codest
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Industries
    • Fintech et banque
    • E-commerce
    • Adtech
    • Santé (Healthtech)
    • Fabrication
    • Logistique
    • Automobile
    • IOT
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
Flèche arrière RETOUR
2016-07-09
Développement de logiciels

Gestion de la structure de la base de données dans plusieurs succursales

Tomasz Kowalewski

Le développement d'une application ne se limite pas à la mise en œuvre de nouvelles fonctions ou à l'application de correctifs. Il faut parfois inverser les changements et revenir à l'étape précédente du projet. Un problème fréquent qui peut survenir lorsque l'on travaille sur plusieurs branches est lié au maintien de la version appropriée de la structure d'une base de données. Les programmeurs qui utilisent les rails ont à leur disposition des solutions prêtes à l'emploi. Ces solutions prennent en charge la mise en œuvre et le contrôle des changements de base de données - ce sont les migrations. Je ne décrirai pas comment cela fonctionne et quelles sont les possibilités que cela apporte - je voudrais me concentrer sur le problème du maintien de la version appropriée de la structure d'une base de données lorsque l'on change de branche.

La couche de base de données d'une application est un être distinct et n'est contrôlée que par les migrations. Lors de la création de nouvelles migrations, n'oubliez pas de rendre réversible la transformation prévue de la structure d'une base de données. Bien sûr, dans les cas extrêmes, nous pouvons augmenter la valeur de la base de données. Migration irréversible dans le vers le bas méthode. Cela nous informera également du fait que la migration ne peut pas être annulée. Il existe différents types de changements que nous effectuons lors de la migration - création, modification et suppression de tables, de colonnes ou d'index. Les opérations de suppression et de modification sont les plus sensibles aux changements. Pourquoi ? Considérons le scénario suivant : nous travaillons avec la branche master, qui est notre chemin de travail principal. Nous avons actuellement une table :

 classe CreateArticles < ActiveRecord::Migration
   def change
     create_table :articles do |t|
       t.string :name
       t.text :description
       t.string :status, null : false
       t.timestamps null : false
     end
   end
 end

Notre Article comporte de telles validations qui requièrent la présence de nom, description et statut attributs.

 classe Article < ActiveRecord::Base
   valide :name, présence : true
   valide :description, présence : true
   valide :status, présence : true
 fin

Nous mettons en œuvre des changements dans notre articles table sur caractéristique et nous supprimons la branche de développement statut colonne.

<classe RemoveStatusColumnFromArticles < ActiveRecord::Migration
   def change
     remove_column :articles, :status, :string
   end
 end

Nous exécutons la migration :

 $ [exemple/caractéristique] : bundle exec rake db:migrate
 == 20150605120955 RemoveStatusColumnFromArticles : migration ===================
 -- remove_column(:articles, :status, :string)
   -> 0.0717s
 == 20150605120955 RemoveStatusColumnFromArticles : migré (0.0718s) ==========

Le schéma d'une base de données est modifié :

diff --git a/db/schema.rb b/db/schema.rb
index 2a100a9..76438c1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,14 +11,13 @@ #

Il est fortement recommandé d'enregistrer ce fichier dans votre système de contrôle de version.

-ActiveRecord::Schema.define(version : 20150605120350) do
+ActiveRecord::Schema.define(version : 20150605120955) do
  createtable "articles", force : :cascade do |t|
    t.string "nom"
    t.text "description"
- t.string "status", null : false t.datetime "createdat", null : false
    t.datetime "updated_at", null : false
  fin

fin

Ensuite, nous validons les modifications dans le fichier caractéristique branche. Pour simuler ce problème, nous passons de la branche actuelle à la branche master. La structure de base a été modifiée par la migration, qui supprime la branche statut dans la colonne caractéristique branche. Essayons d'utiliser la commande suivante :

Article.create !(name : "Kaboom", description : "Lorem ipsum...", status : "active")

Que se passera-t-il après l'exécution de l'action mentionnée ci-dessus ? code? L'erreur : ActiveRecord::UnknownAttributeError : attribut "status" inconnu pour l'article sera soulevée à cause de l'incompatibilité de la version de la structure d'une base de données. Avant de changer la branche en master, nous devrions revenir sur une migration qui supprime le fichier statut de la colonne Article table.

Que pouvons-nous faire pour vérifier si nous devons annuler certaines migrations avant de changer de branche ? Avec l'utilisation du système de contrôle de version (ici c'est git), nous pouvons vérifier notre travail en créant un alias utile :

~/.gitconfig
 [alias]
  migrations = "!f() { git diff --name-only $1..$2 db/migrate | tr -d '[A-Za-z/_.]' ; } ; f"

Exécution de la git migrations master feature La commande permet d'obtenir la liste des versions de migration, qui se trouvent sur le site caractéristique et qui ne peuvent être trouvées sur le site maître.

 $ [example/feature] : git migrations master feature
 20150605120955

Grâce à ces informations, nous pouvons facilement annuler les modifications apportées à la structure de la base de données avant de passer au niveau maître.

 $ [exemple/caractéristique] : bundle exec rake db:migrate:down VERSION=20150605120955
 === 20150605120955 RemoveStatusColumnFromArticles : reverting ===================
 -- add_column(:articles, :status, :string)
   -> 0.0009s
 == 20150605120955 RemoveStatusColumnFromArticles : reverted (0.0045s) ==========

Une autre chose à faire après le retour en arrière de la migration est de restaurer l'état d'un schéma de base de données.

$ [example/feature] : git status
Sur la branche fonctionnalité
Les modifications ne sont pas mises à disposition pour le commit :
 (utiliser "git add ..." pour mettre à jour ce qui sera livré)
 (utiliser "git checkout -- ..." pour supprimer les modifications dans le répertoire de travail)

modifié : db/schema.rb

aucun changement ajouté au commit (utiliser "git add" et/ou "git commit -a")
$ [example/feature] : git checkout db/schema.rb
$ [exemple/caractéristique] : git status
Fonctionnalité sur la branche
rien à livrer, répertoire de travail propre

Nous pouvons maintenant facilement passer à l'option maître branche.

L'exemple donné n'est pas un problème compliqué à résoudre, mais il devrait vous aider à réaliser à quel point il est important de maintenir la structure d'une base de données lors d'un changement de contexte de travail.

Articles connexes

Développement de logiciels

Construire des applications web à l'épreuve du temps : les conseils de l'équipe d'experts de The Codest

Découvrez comment The Codest excelle dans la création d'applications web évolutives et interactives à l'aide de technologies de pointe, offrant une expérience utilisateur transparente sur toutes les plateformes. Découvrez comment notre expertise favorise la transformation numérique et la...

LE CODEST
Développement de logiciels

Les 10 premières entreprises de développement de logiciels basées en Lettonie

Découvrez les principales sociétés de développement de logiciels en Lettonie et leurs solutions innovantes dans notre dernier article. Découvrez comment ces leaders de la technologie peuvent vous aider à développer votre entreprise.

thecodest
Solutions pour les entreprises et les grandes entreprises

L'essentiel du développement de logiciels Java : Un guide pour une externalisation réussie

Explorez ce guide essentiel sur le développement réussi de logiciels Java outsourcing pour améliorer l'efficacité, accéder à l'expertise et assurer la réussite des projets avec The Codest.

thecodest
Développement de logiciels

Le guide ultime de l'externalisation en Pologne

L'essor de outsourcing en Pologne est dû aux progrès économiques, éducatifs et technologiques, qui favorisent la croissance des technologies de l'information et un climat propice aux entreprises.

TheCodest
Solutions pour les entreprises et les grandes entreprises

Le guide complet des outils et techniques d'audit informatique

Les audits informatiques garantissent la sécurité, l'efficacité et la conformité des systèmes. Pour en savoir plus sur leur importance, lisez l'article complet.

The Codest
Jakub Jakubowicz CTO & Co-Fondateur

Abonnez-vous à notre base de connaissances et restez au courant de l'expertise du secteur des technologies de l'information.

    A propos de nous

    The Codest - Entreprise internationale de développement de logiciels avec des centres technologiques en Pologne.

    Royaume-Uni - Siège

    • Bureau 303B, 182-184 High Street North E6 2JA
      Londres, Angleterre

    Pologne - Les pôles technologiques locaux

    • Parc de bureaux Fabryczna, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsovie, Pologne

      The Codest

    • Accueil
    • A propos de nous
    • Services
    • Études de cas
    • Savoir comment
    • Carrières
    • Dictionnaire

      Services

    • Conseil consultatif
    • Développement de logiciels
    • Développement backend
    • Développement frontal
    • Staff Augmentation
    • Développeurs backend
    • Ingénieurs en informatique dématérialisée
    • Ingénieurs des données
    • Autres
    • Ingénieurs AQ

      Ressources

    • Faits et mythes concernant la coopération avec un partenaire externe de développement de logiciels
    • Des États-Unis à l'Europe : Pourquoi les startups américaines décident-elles de se délocaliser en Europe ?
    • Comparaison des pôles de développement Tech Offshore : Tech Offshore Europe (Pologne), ASEAN (Philippines), Eurasie (Turquie)
    • Quels sont les principaux défis des CTO et des DSI ?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Conditions d'utilisation du site web

    Copyright © 2025 par The Codest. Tous droits réservés.

    fr_FRFrench
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fr_FRFrench