Le blog de la CT2C

Mais au fait, qu'est ce que Ruby On Rails ?

Par Régis Millet (aka Kulgar) , publié le 7 Décembre 2012

J'ai rédigé plusieurs tutoriels sur Ruby On Rails mais je me rends compte que je n'ai même pas encore introduit ce que c'est exactement ! Voyons donc cela.

Ruby On Rails est un framework


Ruby On Rails est un framework orienté Web (i.e. facilitant et accélérant le développement de sites Web). Mais un framework qu'est ce que c'est ?

Un Framework, ce n'est ni plus ni moins qu'un ensemble de fonctions pré-faites pour faciliter et guider le développement d'un logiciel. Attention, ne confondez pas un Framework avec une simple bibliothèques de fonctions ! Un Framework, c'est un peu plus que cela. S'ils possèdent effectivement un ensemble de fonctions, les Frameworks sont généralement plus génériques et ils imposent très souvent une architecture et des conventions à suivre durant le développement du logiciel.

Evidemment, les développeurs ne conçoivent pas les Frameworks pour s'ajouter un maximum de contraintes. Non, les Frameworks intègrent très souvent les bonnes pratiques de développement en guise de conventions, et vous oblige à suivre ces bonnes pratiques. Et ce n'est pas plus mal ! Ces bonnes pratiques sont généralement celles de millions de développeurs à travers le monde et accélèreront votre vitesse de développement !

Prenons un exemple très simple, une bonne pratique pour tout développeur a toujours été "de ne pas se répéter" (i.e. ne pas recopier 36 fois le même code dans différents fichiers). Eh bien Ruby On Rails intègre cela dans sa philosophie. Cette bonne pratique (ou convention) s'appelle DRY pour Don't Repeat Yourself. Grosso modo, en Ruby On Rails tout est fait pour que vous n'ayez jamais à répéter vos lignes de code.

Grâce à ces conventions et ces bonnes pratiques il devient plus aisé et beaucoup plus rapide de créer un logiciel. Ruby On Rails a très vite fait sensation notamment lorsqu'il a été montré en conférence (et en direct donc) qu'il était possible de créer toutes les bases d'un Blog (articles, commentaires, navigations...) en moins de 10 minutes ! C'était une révolution et cela démontrait bien la puissance et l'avantage que représentait ce Framework orienté Web.

Dès lors de nombreux Frameworks basé sur Ruby On Rails ont vu le jour et d'autres s'en sont grandement inspirés, surtout dans l'univers de PHP (un autre langage Web dynamique). Mais Ruby On Rails ce n'est pas qu'un framework...

C'est aussi un ensemble de Gems


Qu'est-ce qu'une Gem ? Là il s'agit d'une bibliothèque permettant d'ajouter un certain nombre de fonctionnalités bien précises. Les Gems sont ce qui font quasiment toute la richesse de Ruby On Rails. Extrêmement simple à intégrer dans n'importe quel projet Web, elles permettent d'ajouter toute une fonctionnalité en quelques instants pour vous éviter de réinventer la roue.

Vous souhaitez un système d'authentification ? La Gem Devise est là !
Vous aimeriez un espace d'administration ? Vous avez rails_admin ou active_admin !
Vous souhaitez que vos utilisateurs puissent se connecter avec FaceBook ou Google ? Il existe des plug-ins pour Devise permettant cela et plus encore ! Ces gems vous faciliteront la publication de news sur les murs de vos utilisateurs (par exemple).
Vous voulez une interface cliente jolie, pré-faite, compatible HTML5 et anciens navigateurs, personnalisables, etc. ? Il existe des Gems qui intègrent Twitter-BootStrap ou Foundation et ajoutent ces fonctionnalités de rétrocompatibilité !!

Et il y en a des dizaines de milliers ! L'avantage de ces gems, c'est qu'elles sont toutes (ou presque) maintenues via GitHub. GitHub est une plateforme Web où les développeurs du monde entier partagent leurs créations (ici les Gems), et peuvent participer aux projets d'autres développeurs. Rails, qui est lui-même une Gem, est présent sur cette plateforme. Le système est extrêmement bien conçu et facilite l'ajout de fonctionnalité, la correction de bugs ou de faille de sécurité d'une façon très collaborative. Les Gems profitent ainsi de l'expérience de milliers de développeurs et sont constamment enrichies, corrigées, modifiées pour qu'elles satisfassent toujours mieux leur rôle.

Attention, ne confondez pas les Gems avec des modules de Joomla, par exemple... Ce n'est pas du tout la même chose ! Certes vous choisissez les Gems que vous souhaitez installer et ça vous ajoute une fonctionnalité. Mais les Gems sont également codées en Ruby On Rails, vous pouvez les modifier, les améliorer, les arranger, les recréer, changer le CSS, modifier le code, l'apparence, etc... aussi facilement que vous le faites pour votre application. Et surtout vous profitez de l'expérience de milliers autres développeurs qui ont utilisé cette Gem avant vous et l'ont améliorée.

Ruby On Rails c'est surtout du Ruby


Alors, dans Ruby On Rails, il y a évidemment le mot Ruby. Ruby On Rails profite de tous les avantages de ce langage orienté objet qu'est Ruby. Ruby est un langage libre (et Ruby On Rails aussi), c'est un langage souple s'affranchissant de bon nombre de formalismes (terminé les ";" à chaque fin de ligne, les "return" sont facultatifs, les parenthèses pour les fonctions le sont également, etc.). Il n'est pas basé sur l'indentation (je n'aime pas ce type de langage personnellement). Et surtout il est orienté Objet !

Le fait que Ruby soit orienté Objet a son importance pour Ruby On Rails. Le Framework a pu plus facilement intégrer les bonnes pratiques de développement logiciel dont, la plus connues : le patron d'architecture MVC (lire l'article de Wikipédia pour en savoir plus sur ce patron d'architecture). Suivre ce modèle a permis d'épurer l'architecture des projets Web en Ruby On Rails. Cela permet également de mieux respecter les principes fondamentaux du Web, à savoir que toutes ressources (un utilisateur, un article) peut être supprimée (DELETE), créée (POST), modifiée (PUT), affichée (GET), qui sont les quatre requêtes fondamentales du protocole HTTP.

En suivant cette philosophie, la gestion des données en Ruby On Rails devient réellement trivial et facilite la sécurisation de ces dernières. Simple exemple : en Ruby On Rails, vous avez un fichier de "routes" qui contient, pour faire simple, les pages accessibles de votre application et actions possibles depuis ces pages. Si vous créez une page contenant un formulaire, vos utilisateurs ne pourront y avoir accès si et seulement si vous créez la route adéquate associant le mot clef "GET" à l'url de votre page. Tant que vous n'avez pas créé cette route, cette page ne sera accessible pour personne. Idem, si vous souhaitez autoriser vos utilisateurs à valider et soumettre le formulaire, vous devrez créer une route "POST" gérant cette action.

Ceci n'est qu'un exemple, mais Ruby On Rails intègre à de nombreux niveaux, des fonctions et fonctionnalités permettant de protéger les données. Il ne sera donc pas simple d'accéder à des données, ou des pages auxquelles vous n'avez pas autorisé l'accès. Et tout ceci, Ruby On Rails le doit avant tout à Ruby qui, dès le départ, est un langage qui a été conçu dans ce sens : faciliter l'accès, la modification et la protection des données en facilitant leur gestion et en rendant le développement plus fluide, logique et plus proche de "l'humain".

Conclusion


Ruby On Rails profite de la richesse de Ruby, de l'expérience de milliers de développeurs, facilite et accélère d'autant le développement Web, vous guide et vous aide à mieux gérer vos données, à mieux développer et de façon plus propre. (C'est toujours mieux pour tout projet Web souvent excessivement collaboratifs !).

Certes cela signifie apprendre le Ruby puis maîtriser les fonctionnalités offertes par Ruby On Rails. Mais cette petite "perte de temps" (apprendre un nouveau langage informatique n'est jamais une perte de temps !) sera grandement récompensée par la suite car je puis vous assurer que cela augmentera énormément votre productivité !

Également, ne vous inquiétez pas, la mise en ligne de projets Web développés en Ruby On Rails, n'est pas plus compliqué que celle de projets PHP et peut se faire sur quasiment n'importe quel serveur ! (Peut-être pas sur tous les mutualisés, ça dépendra de votre liberté d'action sur ces derniers). De nombreux travaux ont été réalisés, et un serveur Rails peut très bien tourner derrière un serveur Apache ou NGinx (notamment grâce à Passenger). Et pour tous ceux qui ont un petit budget, Heroku est là (hébergement gratuit pour les projets Open Source ou pour les tout petits projets).

Le Framework Ruby On Rails est un Framework qu'il faut absolument découvrir au moins une fois dans sa vie de développeur. Après, on l'aime ou on ne l'aime pas, sachez par contre que bon nombre de Frameworks s'en sont inspirés tant en PHP qu'en Python. (Et réciproquement, Ruby On Rails s'inspire de Frameworks issus d'autres univers). La seule barrière qui existe malheureusement c'est la langue: il n'existe encore que peu de ressources en français et peu de tutoriels. Mais ne vous inquiétez pas, je suis là (et ne suis pas seul, loin de là !), et j'essaie d'arranger cela !

Enfin, pour les chanceux qui, comme moi, arrivent à lire l'anglais sans avoir de maux de tête au bout de 10 minutes, je ne vous conseillerais qu'un seul ouvrage pour avoir un aperçu de la puissance de ce Framework et acquérir de très bonnes bases : Learn Rails By Example, PDF de l'ouvrage complet, entièrement gratuit !

Si vous voulez d'avantage d'ouvrages, et de ressources sur Ruby, Ruby On Rails et tous les dérivés, je vous invite à visiter ce sujet sur le site du zéro : Ressources utiles Ruby, Ruby On Rails et Sinatra. J'ai participé à ce sujet et continue doucement mais sûrement, mon gros tutoriel autour de Ruby On Rails sur ce site.

J'espère que cet article vous aura plu ! Merci de m'avoir lu !

Autre article - en anglais, présentant Ruby On Rails.


Index -- --

  • 2 Commentaire


  • Bonjour,
    Un article très intéressant qui nous en apprend beaucoup sur ce framework. Bravo !
    Et toutes mes félicitations pour votre site, je le trouve très clair et enrichissant.

    Bonne continuation à CT2C et bonnes fêtes de fin d'année ;-)
    Kler


    Par Citron bleu, le 18 Décembre 2012

  • Merci pour cet article. Il s'agit d'une très bonne introduction. J'espère qu'elle convaincra de nouveaux développeurs à participer au monde merveilleux de Ruby On Rails!


    Par dougui, le 15 Décembre 2012
Insérez votre commentaire
  1. Min: 50 caractères, Max: 800. Actuellement: 0 caractères

  2. ne pas remplir