Ruby on Rails, également appelé RoR ou Rails, est un framework web libre écrit en Ruby. Il suit le motif de conception modèle-vue-contrôleur (MVC). Il propose une structure qui permet de développer rapidement et intuitivement. Cependant, il impose un grand niveau d'abstraction dans la programmation qui apporte en contrepartie l'économie d'écrire soi-même la plupart des routines obligatoires d'une application web.

Ruby on Rails
Description de l'image Ruby On Rails Logo.svg.
Description de cette image, également commentée ci-après
Page d'accueil par défaut
Informations
Créateur David Heinemeier HanssonVoir et modifier les données sur Wikidata
Développé par David Heinemeier Hansson et la core team[1]
Première version 13 décembre 2005Voir et modifier les données sur Wikidata
Dernière version 8.1.3 (24 mars 2026)[2]Voir et modifier les données sur Wikidata
Dépôt github.com/rails/railsVoir et modifier les données sur Wikidata
Assurance qualité Intégration continueVoir et modifier les données sur Wikidata
Écrit en RubyVoir et modifier les données sur Wikidata
Système d'exploitation Type UnixVoir et modifier les données sur Wikidata
Environnement Multiplate-forme
Type Framework Web
Licence Licence MITVoir et modifier les données sur Wikidata
Site web rubyonrails.org

Des sites célèbres qui utilisent Ruby on Rails sont Airbnb, Bloomberg, Crunchbase, Ombelliscience, Dribbble[3], indiexpo, GitHub[4], Twitch, Twitter[5], et aussi Shopify.

Philosophie

modifier

Rails est fondé sur deux principes fondamentaux :

  • Ne vous répétez pas : tenter autant que possible de n'avoir des éléments de l'application qu'à un seul endroit. L'architecture MVC et la métaprogrammation en Ruby peuvent faciliter cela ;
  • Convention plutôt que configuration : ne préciser les éléments de configuration que s'ils ne respectent pas les conventions établies. Rails exploite cela en proposant des comportements par défaut pour la plupart de ses fonctionnalités. Cette vision sera conservée, même après la fusion avec Merb et la future modularisation du framework.

Au démarrage d'un projet Rails, peu d'éléments de configuration sont présents. Il ne contient généralement que l'identifiant et le mot de passe d'accès à la base de données, incontournables en MySQL par exemple. Toutefois on peut commencer un projet sans rien configurer, avec l'utilisation par défaut de SQLite.

Les fichiers de configuration sont de type YAML.

Histoire

modifier

La première version de Ruby on Rails date de juillet 2004. Le framework a été extrait de Basecamp[6], un outil de gestion de projets développé par David Heinemeier Hansson.

La première version stable (1.0) est sortie le 14 décembre 2005.

À partir de cette date, Ruby on Rails a marqué le monde du développement web. On a vu pousser un ensemble de frameworks web Rails-like (notamment CakePHP, Symfony et CodeIgniter dans le monde PHP).

Une preview release de la version 2.0 a été annoncée[7] le 30 septembre 2007. Rails 2.0 apporte principalement[7] :

  • les ressources qui fournissent une architecture REST ;
  • une différenciation plus claire entre les formats et les convertisseurs (un fichier .rhtml devient un fichier .html.erb, c'est-à-dire un fichier interprété par eruby et dont le résultat est de l'HTML) ;
  • la possibilité d'utiliser des modèles comme URL (par exemple redirect_to(person)) ;
  • la gestion d'authentification HTTP basique ;
  • une protection contre les attaques CSRF ;
  • l'interception plus simple d'exceptions génériques ;
  • le cache du résultat de certaines requêtes SQL ;
  • une simplification de l'écriture de migration ;
  • le déplacement dans des plugins de tous les act_as_* et des modules de base de données propriétaires ;
  • le début de l'abandon de SOAP au profit de REST ;
  • un nouveau système pour le déboguer qui remplace les breakpoints.

Rails 2.3 apporte l'usage du middleware Rack qui permet de gérer des requêtes de niveau serveur, et intègre un reverse proxy. Une autre modification importante est la gestion des formulaires enfants d'un objet parent (nested form).

Rails 3 est la rencontre entre Rails et Merb[8]. À la suite d'une réécriture complète, agnostique (l'API générale est déconnectée d'une bibliothèque particulière). La version 3.0 est sortie le 29 août 2010[9].

La version 4 est sortie le 25 juin 2013 et conseille l'usage de Ruby 2[10].

Rails 5 est sortie le 30 juin 2016[11]. Rails 8, la dernière version majeure, est sortie le 7 novembre 2024[12].

L'architecture modèle-vue-contrôleur

modifier

Rails fournit des outils pour construire une architecture MVC :

  • Les modèles sont les classes assurant la gestion des données. En général la structure de ces classes est déterminée automatiquement par Rails à partir d'une base de données. Les relations entre les tables sont explicitement spécifiées (has_many belongs_to). Spécifier ces relations permet à ActiveRecord de précharger des éléments de classes enfants ou parent.
  • Les vues correspondent à la manière d'afficher les informations à l'utilisateur. Il s'agit généralement d'une combinaison de code HTML et de Ruby dans des fichiers .html.erb. Il est aussi possible de les programmer en Ruby pur avec Builder[13]. Enfin il existe une multitude de plugins de systèmes d'écriture de HTML simplifié, le plus connu est le HAML.
  • Les contrôleurs réagissent aux actions des utilisateurs, ils vont chercher les données dans la base et les mettent à disposition des vues.

Rails permet de créer rapidement des squelettes d'un contrôleur ou d'un modèle ou d'une vue. Il s'agit généralement de code de type échafaudage (ou scaffold) qui assurent des opérations courantes sur le modèle comme l'ajout, la modification et la suppression d'enregistrements. Ces bouts de codes initiaux peuvent être adapté aux besoins spécifiques de l'application.

Rails propose également ActionMailer pour la gestion d'envoi ou réception de courriels et ActionWebService pour SOAP et XML-RPC, ainsi que ActiveRessource pour une interrogation par Web Service de type RESTful.

Rails et Ajax

modifier

Ajax permet de réaliser des pages dynamiques avec JavaScript et XML / JSON pour envoyer des requêtes au serveur sans recharger la page dans le navigateur. Rails offre plusieurs méthodes afin de simplifier l'utilisation d'Ajax[14]. L'apport des RJS est de permettre la génération de code JavaScript, depuis un code Ruby.

Serveur Web

modifier

Rails peut fonctionner avec WEBrick, le serveur HTTP fourni avec Ruby. Cette méthode est souvent utilisée pour le développement et les tests. En production, Apache, lighttpd ou encore nginx avec Mongrel ou thin sont recommandés. Il est également possible d'utiliser Unicorn, très performant dans un environnement dédié.

L'usage de FastCGI n'est plus recommandé à partir de la release 2.3. En effet la bibliothèque initiale mod_ruby avec Apache a été retravaillée, et l'interface avec Apache utilise maintenant Passenger[15]. Passenger est aussi disponible pour nginx.

Gestion de courriels (envoi et réception)

modifier

Les courriels sont générés au niveau des vues. On peut ainsi créer une vue au format texte, et une vue HTML, envoyées dans le même courriel.

La gestion des pièces jointes est aussi supportée et facile d'emploi.

En ce qui concerne la gestion des courriels entrants, il est possible de créer un utilisateur virtuel dans Postfix ou sendmail. Mais le plus aisé est de contrôler une boîte mail par IMAP avec la bibliothèque native de ruby. La gestion des pièces jointes des courriels entrants utilise le même principe que les courriels générés[16].

Bases de données

modifier

Plusieurs systèmes de gestion de base de données sont supportés : SQLite, MySQL, MariaDB, PostgreSQL, DB2, Oracle, Microsoft SQL Server et MongoDB.

Par défaut, SQLite3 est utilisé.

Distribution

modifier

Ruby on Rails est installé via le package manager RubyGems : gem install rails[17]. Le code source est également disponible sur git[18].

La distribution Instant Rails[19] propose une version pré-configurée pour Microsoft Windows de Ruby, Rails, Apache et MySQL .

Le projet Locomotive[20] proposait une installation simplifiée pour Mac OS X. Mais RoR est inclus dans les versions client et serveur de Mac OS X 10.5[21].

Ruby on Rails est également inclus dans de nombreuses distributions GNU/Linux.

RVM permet d'installer plusieurs versions de Ruby et de Rails sur la même machine. Bundler permet de gérer finement les gems d'un projet et de savoir ce qu'il est possible de mettre à jour sans casser l'application. Lorsque la mise à jour casse quelque chose dans la compatibilité et les dépendances, l'installateur averti l'usager. Si une recette manuelle est connue pour la migration, elle sera expliquée.

Éditeurs

modifier

Voir aussi

modifier

Bibliographie

modifier

Articles connexes

modifier

Liens externes

modifier

Notes et références

modifier
  1. (en) Core team behind Ruby on Rails
  2. « Release (8.1.3) » (consulté le 26 mars 2026)
  3. https://appsearch.org/blog/django-vs-ruby-on-rails/
  4. https://se-radio.net/2021/08/episode-471-jason-meller-on-choosing-the-right-tech-stack-for-a-greenfield-project/
  5. (en) « Breaking the Monolith at Twitch : Part One », sur twitch.tv (consulté le 18 juillet 2024).
  6. (en) Site officiel de Basecamp
  7. a et b (en) Rails 2.0: Preview Release
  8. Article sur Merb et sur Rails, 24 décembre 2008
  9. (en) David, « Rails 3.0 : It’s ready! », sur rubyonrails.org, 29 août 2010 (consulté le 13 août 2020).
  10. (en) dhh, « Rails 4.0 : Final version released! », sur rubyonrails.org, 25 juin 2013 (consulté le 13 août 2020).
  11. (en) dhh, « Rails 5.0 : Action Cable, API mode, and so much more », sur rubyonrails.org, 30 juin 2016 (consulté le 13 août 2020).
  12. (en) dhh, « Toutes les versions de rails », sur rubygems.org, 10 novembre 2020 (consulté le 10 novembre 2020).
  13. (en) Projet Builder sur Rubyforge
  14. (en) Ajax on Rails
  15. (en) site de Passenger
  16. (en) ActionMailer API
  17. mais aussi aux formats zip et tarball Téléchargement sur le site officiel
  18. GitHub
  19. Site officiel d'Instant Rails
  20. Site officiel
  21. (en) Ruby on Rails will ship with OS X 10.5 (Leopard)
  22. (en) Rails sous Vim
  23. (en) « New Rinari package on marmalade-repo.org », Rails On Emacs, 18 octobre 2011.

📚 Artikel Terkait di Wikipedia

Plan d'exécution

ensuite joint par l'algorithme Nested Loops, et classé par LastName. https://technet.microsoft.com/fr-fr/library/ms178071%28v=sql.105%29.aspx (en) Cet article

Imbrication d'ensembles

En informatique, l'imbrication d'ensembles, nested sets en anglais, est une technique pour représenter des données hiérarchisées dans une base de données

Optimisation de requête

est une opération dans laquelle plusieurs plans d'exécution d'une requête SQL sont examinés pour en sélectionner le meilleur. L'estimation de leurs coûts

Quire

« 臺灣軟體之光──ZK », sur iThome (consulté le 3 janvier 2022) « Quire Mark III: Nested Tasks Meets Board », sur Quire & You, 23 juillet 2018 (consulté le 3 janvier