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 }) }, } } })() Rails et autres moyens de transport - 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
2021-06-30
Développement de logiciels

Rails et autres moyens de transport

The Codest

Krzysztof Buszewicz

Senior Software Engineer

Rails est un framework compatible avec Rack, axé sur le développement rapide d'applications. Malheureusement, l'approche "everything out of the box" et le comportement aveugle de Rails-way entraînent souvent une perte de qualité du code de l'application, tant au niveau de sa réception (lisibilité) que de son fonctionnement.

Problèmes populaires liés à Rails et à Rails-way

Problèmes mentionnés dans : article sur Shopify

  • routage,
  • avant les actions,
  • des actions d'envergure au niveau des contrôleurs,
  • les méthodes privées dans les contrôleurs,
  • mixins utilisés une seule fois,
  • logique dans les vues,
  • Rappels ActiveRecord,
  • Associations,
  • "gros modèles".

Problèmes supplémentaires

  • Validations des enregistrements actifs,
  • implicite plutôt qu'explicite,
  • abuser de DRY,
  • les délégations aux associations,
  • les appels de service dans les modèles.

Alternatives à Rails

Lorsqu'il s'agit de Rails dans le Rubis nous disposons de plusieurs alternatives. D'autres frameworks basés sur Rack incluent : - Sinatra, – Roda, – Hanami.

Qu'est-ce qui les rend uniques ?

Sinatra et Roda nous offrent tous deux une syntaxe de routage par bloc, mais le routage dans Sinatra est une liste et dans Roda - un arbre. Dans les deux frameworks, nous devons nous occuper nous-mêmes de l'implémentation de la couche de modèle. Dans le cas de Roda, c'est une bonne idée d'utiliser la gemme Sequel.

Roda est inspiré de Sinatra. Il est très léger en soi, mais il possède de nombreux plugins.

Hanami est le plus proche de Rails en ce qui concerne les domaines couverts par le cadre. Les différences les plus importantes en termes d'utilisation sont les suivantes :

  • contrôleurs en Rails vs. actions dans Hanami,
  • des classes/objets dédiés au traitement d'une requête HTTP spécifique, et non un contrôleur pour les actions liées à une ressource spécifique (modèle),
  • basée sur des référentiels et des entités, séparant la persistance du reste de l'application, et non sur le modèle de l'enregistrement actif.

Hanami version 1 limite fortement l'utilisation de la ROM sur laquelle il est basé (version 3, et il est déjà 5), il n'est donc pas intéressant d'utiliser la couche de modèle qui y est proposée. Cependant, comme il s'agit d'un framework très ouvert, il est assez facile d'y implémenter son propre modèle.

Suppléments pour Rails

Il est intéressant d'utiliser des solutions qui ne dépendent pas des Rails et sont plus proches de la "pureté" Rubis. Les outils mentionnés dans la présentation sont les suivants :

  • Sequel (ORM, alternative à ActiveRecord),
  • ROM (object mapper),
  • bibliothèques dry-rb : dry-validations, dry-system et dry-monads.

La suite est facile à mettre dans un projetIl est basé sur des plugins et met également en œuvre le modèle d'enregistrement actif. Il offre une meilleure prise en charge des requêtes de bas niveau que Rails' ActiveRecord.

ROM utilise Sequel, mais son concept consiste à traduire les enregistrements de la (des) base(s) de données en enregistrements de la Rubis objets. Il vise la rapidité et la transformation des données. Il sépare clairement la couche de persistance de l'application.

Les bibliothèques Dry-rb sont des outils très utiles :

  • dry-validation est très facile à utiliser dans les projets d'API et permet de contrôler l'exactitude des données entrantes,
  • dry-system nécessite un peu de pratique et de patience pour que les développeurs le comprennent, mais il permet une gestion très souple des dépendances dans l'application et le chargement des composants du projet de manière isolée ; si nous voulons utiliser cette bibliothèque en RailsNous pouvons utiliser des rails secs,
  • Les monades sèches sont un concept difficile en théorie, mais en pratique il est plus facile à comprendre, le résultat des monades peut être un excellent moyen d'améliorer la lisibilité de l'information. code en envisageant des cas spécifiques plutôt que des "si" ramifiés.

Conclusions

Il est préférable d'utiliser Rails de sorte que vous n'ayez pas à utiliser Rails un jour.

Sources d'information

Articles

  • Les odeurs de code dans les applications Rails (par Shopify)
  • Hanami : repozytoria
  • Guides Rails

Cadres

  • Sinatra
  • Roda
  • Hanami

Pierres précieuses

  • Suite
  • ROM
  • Biblioteki dry-rb
  • Validateur de schéma JSON Ruby (json-schema)
  • Pagy
  • Rodauth
  • rodauth-rails

Spécifications

  • Support
  • Schéma JSON

En savoir plus :

Qu'est-ce que Ruby on Jets et comment construire une application en l'utilisant ?

Vuelendar. Un nouveau projet de Codest basé sur Vue.js

Le rapport hebdomadaire de Codest sur les meilleurs articles technologiques. Construire un logiciel pour 50 millions de sockets simultanés (10)

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