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