{"id":3530,"date":"2020-04-24T08:53:31","date_gmt":"2020-04-24T08:53:31","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/rails-and-other-means-of-transport\/"},"modified":"2026-04-24T11:27:38","modified_gmt":"2026-04-24T11:27:38","slug":"les-rails-et-autres-moyens-de-transport","status":"publish","type":"post","link":"https:\/\/thecodest.co\/fr\/blog\/rails-and-other-means-of-transport\/","title":{"rendered":"Rails et autres moyens de transport"},"content":{"rendered":"<h2>Probl\u00e8mes populaires li\u00e9s \u00e0 Rails et \u00e0 Rails-way<\/h2>\n<h3>Probl\u00e8mes mentionn\u00e9s dans : <a href=\"https:\/\/web.archive.org\/web\/20210306055107\/https:\/\/upgrow.shopify.io\/code-smells-in-rails-apps\" rel=\"nofollow\">article sur Shopify<\/a><\/h3>\n<ul>\n<li>routage,<\/li>\n<li>avant les actions, <\/li>\n<li>des actions d'envergure au niveau des contr\u00f4leurs, <\/li>\n<li>les m\u00e9thodes priv\u00e9es dans les contr\u00f4leurs, <\/li>\n<li>mixins utilis\u00e9s une seule fois, <\/li>\n<li>logique dans les vues, <\/li>\n<li>Rappels ActiveRecord, <\/li>\n<li>Associations, <\/li>\n<li>\"gros mod\u00e8les\".<\/li>\n<\/ul>\n<h3>Probl\u00e8mes suppl\u00e9mentaires<\/h3>\n<ul>\n<li>Validations des enregistrements actifs, <\/li>\n<li>implicite plut\u00f4t qu'explicite, <\/li>\n<li>abuser de DRY, <\/li>\n<li>les d\u00e9l\u00e9gations aux associations, <\/li>\n<li>les appels de service dans les mod\u00e8les.<\/li>\n<\/ul>\n<h2>Alternatives \u00e0 Rails<\/h2>\n<p>Lorsqu'il s'agit de <strong><a href=\"https:\/\/thecodest.co\/fr\/blog\/ways-to-increase-your-rails-performance\/\">Rails<\/a><\/strong> dans le <strong><a href=\"https:\/\/thecodest.co\/fr\/blog\/hire-ror-developer\/\">Rubis<\/a> <\/strong>nous disposons de plusieurs alternatives. D'autres frameworks bas\u00e9s sur Rack incluent : - <b>Sinatra<\/b>, - <strong>Roda<\/strong>, -<b> Hanami<\/b>.<\/p>\n<h3>Qu'est-ce qui les rend uniques ?<\/h3>\n<p>Sinatra et Roda proposent tous deux <a href=\"https:\/\/thecodest.co\/fr\/blog\/why-us-companies-are-opting-for-polish-developers\/\">nous<\/a> 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\u00eames de l'impl\u00e9mentation de la couche de mod\u00e8le. Dans le cas de Roda, c'est une bonne id\u00e9e d'utiliser la gemme Sequel. <\/p>\n<p>Roda est inspir\u00e9 de Sinatra. Il est tr\u00e8s l\u00e9ger en soi, mais il poss\u00e8de de nombreux plugins. <\/p>\n<p>Hanami est le plus proche de<strong> Rails<\/strong> en ce qui concerne les domaines couverts par le cadre. Les diff\u00e9rences les plus importantes en termes d'utilisation sont les suivantes : <\/p>\n<ul>\n<li>contr\u00f4leurs en <strong>Rails<\/strong> vs. actions dans Hanami,<\/li>\n<li>des classes\/objets d\u00e9di\u00e9s au traitement d'une requ\u00eate HTTP sp\u00e9cifique, et non un contr\u00f4leur pour les actions li\u00e9es \u00e0 une ressource sp\u00e9cifique (mod\u00e8le),<\/li>\n<li>bas\u00e9e sur des r\u00e9f\u00e9rentiels et des entit\u00e9s, s\u00e9parant la persistance du reste de l'application, et non sur le mod\u00e8le de l'enregistrement actif. <\/li>\n<\/ul>\n<p>Hanami version 1 limite fortement l'utilisation de la ROM sur laquelle il est bas\u00e9 (version 3, et il est d\u00e9j\u00e0 5), il n'est donc pas int\u00e9ressant d'utiliser la couche de mod\u00e8le qui y est propos\u00e9e. Cependant, comme il s'agit d'un framework tr\u00e8s ouvert, il est assez facile d'y impl\u00e9menter son propre mod\u00e8le. <\/p>\n<h2>Suppl\u00e9ments pour Rails<\/h2>\n<p>Il est int\u00e9ressant d'utiliser des solutions qui ne d\u00e9pendent pas des <strong>Rails<\/strong> et sont plus proches de la \"puret\u00e9\" <strong>Rubis<\/strong>. Les outils mentionn\u00e9s dans la pr\u00e9sentation sont les suivants : <\/p>\n<ul>\n<li>Sequel (ORM, alternative \u00e0 ActiveRecord),<\/li>\n<li>ROM (object mapper), <\/li>\n<li>biblioth\u00e8ques dry-rb : dry-validations, dry-system et dry-monads.<\/li>\n<\/ul>\n<p>La suite est facile \u00e0 mettre dans un <a href=\"https:\/\/thecodest.co\/fr\/dictionary\/why-do-projects-fail\/\">projet<\/a>Il est bas\u00e9 sur des plugins et met \u00e9galement en \u0153uvre le mod\u00e8le d'enregistrement actif. Il offre une meilleure prise en charge des requ\u00eates de bas niveau que <strong>Rails<\/strong>' ActiveRecord. <\/p>\n<p>ROM utilise Sequel, mais son concept consiste \u00e0 traduire les enregistrements de la (des) base(s) de donn\u00e9es en enregistrements de la<strong> Rubis<\/strong> objets. Il vise la rapidit\u00e9 et l'efficacit\u00e9. <a href=\"https:\/\/thecodest.co\/fr\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">donn\u00e9es<\/a> transformation. S\u00e9parer clairement la couche de persistance de l'application. <\/p>\n<p>Les biblioth\u00e8ques Dry-rb sont des outils tr\u00e8s utiles : <\/p>\n<ul>\n<li>La validation \u00e0 sec est tr\u00e8s facile \u00e0 utiliser en <a href=\"https:\/\/thecodest.co\/fr\/blog\/compare-staff-augmentation-firms-that-excel-in-api-team-staffing-for-financial-technology-projects\/\">API<\/a> et permet de contr\u00f4ler l'exactitude des donn\u00e9es entrantes, <\/li>\n<li>dry-system n\u00e9cessite un peu de pratique et de patience pour que les d\u00e9veloppeurs le comprennent, mais il permet une gestion tr\u00e8s souple des d\u00e9pendances dans l'application et le chargement des composants du projet de mani\u00e8re isol\u00e9e ; si nous voulons utiliser cette biblioth\u00e8que en <strong>Rails<\/strong>Nous pouvons utiliser des rails secs, <\/li>\n<li>Les monades s\u00e8ches sont un concept difficile en th\u00e9orie, mais en pratique il est plus facile \u00e0 comprendre, le r\u00e9sultat des monades peut \u00eatre un excellent moyen d'am\u00e9liorer la lisibilit\u00e9 de l'information. <a href=\"https:\/\/thecodest.co\/fr\/dictionary\/what-is-code-refactoring\/\">code<\/a> en envisageant des cas sp\u00e9cifiques plut\u00f4t que des \"si\" ramifi\u00e9s. <\/li>\n<\/ul>\n<h2>Conclusions<\/h2>\n<p>Il est pr\u00e9f\u00e9rable d'utiliser <strong>Rails<\/strong> de sorte que vous n'ayez pas \u00e0 utiliser<strong> Rails<\/strong> un jour. <\/p>\n<h2>Sources d'information<\/h2>\n<p><strong>Articles<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/web.archive.org\/web\/20210306055107\/https:\/\/upgrow.shopify.io\/code-smells-in-rails-apps\">Les odeurs de code dans les applications Rails (par Shopify)<\/a><\/li>\n<li><a href=\"https:\/\/guides.hanamirb.org\/v1.3\/repositories\/overview\/\">Hanami : repozytoria<\/a><\/li>\n<li><a href=\"https:\/\/guides.rubyonrails.org\">Guides Rails<\/a><\/li>\n<\/ul>\n<p><strong>Cadres<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/sinatrarb.com\">Sinatra<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jeremyevans\/roda\">Roda<\/a><\/li>\n<li><a href=\"https:\/\/hanamirb.org\">Hanami<\/a><\/li>\n<\/ul>\n<p><strong>Pierres pr\u00e9cieuses<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/jeremyevans\/sequel\">Suite<\/a><\/li>\n<li><a href=\"https:\/\/rom-rb.org\">ROM<\/a><\/li>\n<li><a href=\"https:\/\/dry-rb.org\">Biblioteki dry-rb<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/ruby-json-schema\/json-schema\">Validateur de sch\u00e9ma JSON Ruby (json-schema)<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/ddnexus\/pagy\">Pagy<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jeremyevans\/rodauth\">Rodauth<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/janko\/rodauth-rails\">rodauth-rails<\/a><\/li>\n<\/ul>\n<p><strong>Sp\u00e9cifications<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/rack\/rack\/blob\/master\/SPEC.rdoc#label-Rack+applications\">Support<\/a><\/li>\n<li><a href=\"https:\/\/json-schema.org\/specification.html\">Sch\u00e9ma JSON<\/a><\/li>\n<\/ul>\n<p><article-inline-code-review><\/article-inline-code-review><\/p>\n<p><strong>En savoir plus :<\/strong><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/ruby-on-jets-ruby-aws-lambda\/\">Qu'est-ce que Ruby on Jets et comment construire une application en l'utilisant ?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/vuelendar-a-new-codests-project-based-on-vue-js\/\">Vuelendar. Un nouveau projet de Codest bas\u00e9 sur Vue.js<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/codests-weekly-report-of-best-tech-articles-building-software-for-50m-concurrent-sockets-10\/\">Le rapport hebdomadaire de Codest sur les meilleurs articles technologiques. Construire un logiciel pour 50 millions de sockets simultan\u00e9s (10)<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Rails est un framework compatible avec Rack, ax\u00e9 sur le d\u00e9veloppement rapide d'applications. Malheureusement, l'approche \"everything out of the box\" et le comportement aveugle de Rails-way entra\u00eenent souvent une perte de qualit\u00e9 du code de l'application, tant au niveau de sa r\u00e9ception (lisibilit\u00e9) que de son fonctionnement.<\/p>","protected":false},"author":2,"featured_media":3531,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3530","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Rails and Other Means of Transport - The Codest<\/title>\n<meta name=\"description\" content=\"Rails is a Rack-compatible framework focused on quick application development. Unfortunately, the &quot;everything out of the box&quot; approach and blind Rails-way behavior often cause the application code to lose quality, both in terms of its reception (readability) and operation.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/fr\/blog\/les-rails-et-autres-moyens-de-transport\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rails and Other Means of Transport\" \/>\n<meta property=\"og:description\" content=\"Rails is a Rack-compatible framework focused on quick application development. Unfortunately, the &quot;everything out of the box&quot; approach and blind Rails-way behavior often cause the application code to lose quality, both in terms of its reception (readability) and operation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/fr\/blog\/les-rails-et-autres-moyens-de-transport\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-24T08:53:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T11:27:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Rails and Other Means of Transport\",\"datePublished\":\"2020-04-24T08:53:31+00:00\",\"dateModified\":\"2026-04-24T11:27:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\"},\"wordCount\":577,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails.jpg\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\",\"name\":\"Rails and Other Means of Transport - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails.jpg\",\"datePublished\":\"2020-04-24T08:53:31+00:00\",\"dateModified\":\"2026-04-24T11:27:38+00:00\",\"description\":\"Rails is a Rack-compatible framework focused on quick application development. Unfortunately, the \\\"everything out of the box\\\" approach and blind Rails-way behavior often cause the application code to lose quality, both in terms of its reception (readability) and operation.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails.jpg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails.jpg\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-and-other-means-of-transport\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rails and Other Means of Transport\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/fr\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Rails et autres moyens de transport - The Codest","description":"Rails est un framework compatible avec Rack, ax\u00e9 sur le d\u00e9veloppement rapide d'applications. Malheureusement, l'approche \"everything out of the box\" et le comportement aveugle de Rails-way entra\u00eenent souvent une perte de qualit\u00e9 du code de l'application, tant au niveau de sa r\u00e9ception (lisibilit\u00e9) que de son fonctionnement.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/fr\/blog\/les-rails-et-autres-moyens-de-transport\/","og_locale":"fr_FR","og_type":"article","og_title":"Rails and Other Means of Transport","og_description":"Rails is a Rack-compatible framework focused on quick application development. Unfortunately, the \"everything out of the box\" approach and blind Rails-way behavior often cause the application code to lose quality, both in terms of its reception (readability) and operation.","og_url":"https:\/\/thecodest.co\/fr\/blog\/les-rails-et-autres-moyens-de-transport\/","og_site_name":"The Codest","article_published_time":"2020-04-24T08:53:31+00:00","article_modified_time":"2026-04-24T11:27:38+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg","type":"image\/jpeg"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Rails and Other Means of Transport","datePublished":"2020-04-24T08:53:31+00:00","dateModified":"2026-04-24T11:27:38+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/"},"wordCount":577,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg","articleSection":["Software Development"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/","url":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/","name":"Rails et autres moyens de transport - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg","datePublished":"2020-04-24T08:53:31+00:00","dateModified":"2026-04-24T11:27:38+00:00","description":"Rails est un framework compatible avec Rack, ax\u00e9 sur le d\u00e9veloppement rapide d'applications. Malheureusement, l'approche \"everything out of the box\" et le comportement aveugle de Rails-way entra\u00eenent souvent une perte de qualit\u00e9 du code de l'application, tant au niveau de sa r\u00e9ception (lisibilit\u00e9) que de son fonctionnement.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails.jpg","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Rails and Other Means of Transport"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"The Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/fr\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/comments?post=3530"}],"version-history":[{"count":3,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3530\/revisions"}],"predecessor-version":[{"id":7965,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3530\/revisions\/7965"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/media\/3531"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/media?parent=3530"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/categories?post=3530"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/tags?post=3530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}