Ruby on Rails

Définition

Ruby on Rails (souvent abrégé en Rails) est un framework web full-stack open-source écrit en Ruby selon le pattern architectural et qui promeut les principes de « convention over configuration » (CoC) et « don’t repeat yourself » (DRY).

Vue d’ensemble

Créé par David Heinemeier Hansson (DHH) en 2004, Rails a été utilisé pour la première fois pour alimenter Basecamp (anciennement 37signals). Il a popularisé le concept de productivité des développeurs dans le développement web et a inspiré des frameworks dans de nombreux autres langages.

Fonctionnalités clés

  • Convention over configuration : Valeurs par défaut raisonnables réduisant le code boilerplate
  • Scaffolding : Auto-génération d’opérations CRUD, migrations de base de données et vues
  • Active Record : ORM qui mappe les tables de base de données aux classes Ruby
  • Routage RESTful : Conventions d’URL pour les ressources et les actions
  • Pipeline d’actifs : Compilation de CSS, JavaScript et CoffeeScript
  • Mailers : Envoi d’e-mails intégré avec templates
  • Tests : Framework de test intégré (Minitest/RSpec)

Architecture

  • Pattern MVC : Modèles (données), Vues (présentation), Contrôleurs (logique)
  • Active Record : Couche d’abstraction de base de données
  • Action Controller : Gestion des requêtes/réponses
  • Action View : Rendu de templates (ERB, Haml, Slim)
  • Action Mailer : Livraison d’e-mails
  • Action Cable : Support WebSocket pour les fonctionnalités en temps réel

Versions majeures

|| Version | Année | Fonctionnalités clés | ||———|——|————–| || Rails 1 | 2004 | Version initiale, MVC, Active Record | || Rails 2 | 2007 | Routage, named scopes, partials | || Rails 3 | 2010 | Stack middleware, multiples adaptateurs DB, gems en tant que dépendances | || Rails 4 | 2012 | File d’attente async, Turbolinks, aperçu Action Cable | || Rails 5 | 2016 | Active Job, Action Cable, mode API, WebSockets | || Rails 6 | 2019 | Booleans dans les migrations, générateurs, Action Text, Action Mailbox | || Rails 7 | 2021 | Import maps, Hotwire/Turbo, Action Text, exécutions de tests parallélisées | || Rails 8 | 2024 | Suppression de Webpacker, uploads async, importmaps-rails, stimulus-rails |

Écosystème

  • Gems : Plus de 150 000 gems Ruby disponibles via rubygems.org
  • Hotwire : Turbo + Stimulus pour des expériences modernes de type SPA sans frameworks JavaScript
  • Devise : Gem d’authentification
  • Sidekiq : Traitement des jobs en arrière-plan
  • PgBouncer : Mise en pool des connexions de base de données

Licence

Ruby on Rails est publié sous la MIT License, une licence open-source permissive approuvée par l’OSI. Il est libre d’utilisation, de modification et de distribution pour tout usage, y compris commercial.

Voir rails/rails pour plus de détails.

Cas d’utilisation

  • Prototypage rapide et développement de MVP
  • Applications SaaS (Basecamp, GitHub initialement, Shopify initialement)
  • Systèmes de gestion de contenu
  • Backends API (mode API Rails)
  • Plates-formes de commerce électronique

Frameworks associés