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 }) }, } } })() Ruby on Rails modularisation avec Packwerk Episode I - 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
2022-01-05
Développement de logiciels

Ruby on Rails modularisation avec Packwerk Episode I

Nicolas Nisoria

Les êtres humains ont du mal à avoir une vue d'ensemble d'un problème sans y consacrer beaucoup de temps et d'efforts. C'est particulièrement vrai lorsqu'il s'agit d'applications complexes et de grande envergure. Quels sont les effets secondaires de mes modifications ? Pourquoi cette ligne affecte-t-elle les tests d'une partie éloignée de la base de code ? Il n'existe pas de solution parfaite ou complète, mais Shopify a mis au point un outil qui vous aidera probablement, vous et votre équipe.

Introduction

Pour parler de PackwerkIl faut d'abord introduire quelques concepts.

  • Cohésion: il s'agit de la mesure du degré d'appartenance des éléments d'un module ou d'une classe.
  • Accouplement: il s'agit du niveau de dépendance entre les modules ou les classes.
  • FrontièresLe terme "barrière" fait référence aux barrières entre les code. Dans ce cas, une limite de code fait référence à différents domaines de préoccupation au sein de la même base de code.
  • ModularisationLe système de gestion de la qualité est un système de gestion de la qualité qui permet d'améliorer la qualité de l'information et de la communication.

Problèmes

Comme nous le savons, Rubis ne fournit pas une bonne solution pour faire respecter les limites du code. Nous pouvons spécifier la visibilité mais toutes les dépendances seront chargées dans l'espace de noms global. Dans les applications de grande taille ou monolithiques, cette absence de limites produit les problèmes suivants.

  • Faible cohésion,
  • Couplage élevé,
  • Code spaghetti.

Pour tenter de modulariser le monolithe de Shopify et d'imposer des limites, ils ont essayé différentes solutions sans obtenir les résultats escomptés :
- Définition de constantes privées,
- Établir des limites à l'aide de pierres précieuses,
- Utiliser des tests pour éviter les associations entre composants,
- Utilisation de la gemme de modulation de Ruby,
- Créer des microservices.

Forts des connaissances acquises lors des tentatives précédentes, ils ont décidé de créer leur propre outil : Packwerk.

Packwerk

Qu'est-ce que Packwerk ?

Packwerk est un outil d'analyse statique utilisé pour imposer des limites entre des groupes de données. Rubis fichiers appelés paquets.

Qu'est-ce qu'un paquet ?

A paquet est un dossier contenant du code chargé automatiquement. Le dossier équipe encourage à utiliser les meilleures pratiques de conception lors de la création de paquets.
- Nous devrions emballer ensemble les choses qui ont une grande fonctionnalité. cohésion,

  • Les paquets doivent être relativement peu liés les uns aux autres.

Types de contrôles aux frontières

Nous pouvons faire respecter les limites de confidentialité et de dépendance, vérifier les violations des limites et les dépendances cycliques.

Packwerk en pratique

Il n'existe pas de méthode unique pour structurer ou restructurer votre application lors de la création de paquets. Dans cet article, nous allons suivre l'approche suggérée par
Stephan Hagemann dans Modularisation progressive pour Ruby on Rails.

Choisir le projet

Vous pouvez créer un nouveau projet ou choisissez l'un de vos projets. J'ai décidé d'utiliser un projet open-source appelé CodeTriage. Il est important de mentionner que nous avons besoin d'une application Rails 6 puisque Packwerk utilise Zeitwerk.

Initialiser Packwerk

Tout d'abord, nous devons ajouter la gem à notre Gemfile comme suit gem 'packwerk' puis exécutez liassedans la console. Nous sommes alors prêts à initialiser la gem en exécutant packwerk init.

Ensuite, nous constatons que Packwerk a généré trois fichiers pour nous :

  • packwerk.yml

  • package.yml

  • inflexions.yml

packwerk.yml est le fichier de configuration de Packwerk où nous définirons les fichiers inclus et exclus, énumérerons les chemins de chargement, définirons le fichier d'inflexions, entre autres choses ;

package.yml est le fichier de configuration d'un paquet. Dans ce fichier, nous ajouterons la configuration des limites de notre paquet. Tout dossier contenant package.yml sera reconnu comme un paquet par Packwerk. C'est tout, Packwerk a créé notre première
et nous l'appelons racine l'emballage.

inflexions.yml est l'endroit où nous placerons nos inflexions et acronymes personnalisés au cas où nous les utiliserions.

Pour en savoir plus sur les fichiers et leur configuration, voir
Packwerk.

Propriétés de Packwerk

Pour que la modularisation fonctionne, nous avons besoin de trois propriétés fondamentales : un conteneur nommé, son contenuet explicite dépendances sur d'autres conteneurs. Définissons donc ces propriétés dans Packwerk:

  • Nom: Le nom d'un paquet est son chemin d'accès relatif à partir de la racine du fichier
    l'application.

  • Contenu: Lorsque nous plaçons un package.yml dans un dossier, tous les fichiers de ce dossier sont désormais le contenu du package.

  • Dépendances: Nous pouvons définir des dépendances sur d'autres paquets en ajoutant la clé de dépendances à l'élément package.yml.

Un autre fichier qui n'est pas inclus par défaut mais qui est recommandé est README. Il est important de fournir des informations sur l'utilisation du paquet.

Fin de l'épisode I

Conseil en développement de produits numériques

Lire la suite

GraphQL Ruby. Qu'en est-il des performances ?

Rails et autres moyens de transport

Développement Rails avec TMUX, Vim, Fzf + Ripgrep

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