Ruby, un langage de script (comme Perl ou Python), totalement orienté objet, créé par Yukihiro Matsumoto entre 1993 et 1995.

Yukihiro Matsumoto est un japonnais singulier par ces différents engagements religieux ou dans l'open-source.Ruby est fortement inspiré de Perl et de Python. PHP a un historique très similaire, créé en 1994 et publié en 1995. Ruby est un langage particulièrement orienté objet dans lequel toute donnée est un objet, toute fonction est une méthode toute variable est une référence à un objet. Ruby est donc un langage qui nécessite l'apprentissage des concepts de l'objet. Malgré cet aspect, la programmation procédurale reste possible. Ruby ne se limite pas au web, il est un langage de programmation au même titre que le C ou le java.

Ruby on Rails est un framework web de développement d'applications Web en Ruby, utilisant le modèle MVC. RoR. est extrait de l'outil de gestion de projets BaseCamp créé par le Danois David Heinemeier Hansson.

La première version a été publiée fin 2005 et a bénéficié d'une forte médiatisation à partir du printemps 2006. L'engouement a été fortement porté par la blogosphère souvent pour de mauvaises raisons. On a souvent vu dans Ruby on rails deux innovations :
  • le langage ruby permettant des développements rapides
  • l'intégration d'une couche Ajax permettant la création rapide de fonctionnalité d'embellissement


Or, le langage ruby n'offre pas une implémentation plus rapide que d'autres langages et Ajax n'est pas une technologie propre à Ruby. Alors de quoi parle-t-on ? Ruby on Rails est un framework. Un framework a pour but d'apporter un cadre (une architecture, des composants, une norme de codage) pour rendre plus efficace les développements. Ruby on Rails s'appuie ainsi sur :
  • le design pattern MVC dont on a déjà beaucoup parlé ici.
  • object-relational mapping (ORM), est une technique qui simule une base de données orientée objet à partir d'une base de données relationnelle en exploitant des correspondances entre cette base de données et les objets du langage utilisé ce qui permet un accès facilité aux données via des actions de bas niveaux.
  • L'agilité (permettre de développer via la méthode du même nom) via l'ORM, la génération de la documentation, ...
Ces éléments représentent les choix caractérisant le framework Rails. Le "on rails" indique justement que le développement est sur les rails. Il est encadré et dirigé. Ainsi, Ruby on Rails permet de développer des applications Web sans écrire une ligne de SQL ou des applications Ajax en quelques minutes sans écrire une ligne de Javascript. On peut donc dire que Ruby on Rails propose un haut niveau d'abstraction. Ceci n'est pas sans inconvénient :
  • Le haut niveau d'abstraction est associé à un langage strictement objet. Quand on a besoin d'un mécanisme qui n'existe pas en standard dans Rails, la relative complexité de Ruby refait surface. Il est difficile de forcer Ruby on Rails à faire quelque chose qu'il n'est pas capable de faire.
  • L'accès aux données dans une base SQL est guidé par l'ORM. Conceptuellement, ORM apporte une facilité d'utilisation mais une difficulté de maintenance. L'utilisation du design DAO permet d'abstraire l'accès aux données via des appels de haut niveau.
  • Ruby a des performances en retrait d'autres langages web
Comment positionner Ruby face aux autres langages web ?
  • Sur le web, Ruby on Rails a des performances en retrait par rapport à d'autres langages web. Ruby on Rails est plus performant que Java /j2ee mais en retrait par rapport à php
  • Ruby est open-source et ne nécessite pas une coûteuse licence comme .net pour être utilisé
  • Ruby est un langage strictement objet. Ce qui contraint sa programmation par des intervenants en maîtrisant les concepts.
Comment positionner Ruby on Rails face aux autres framework web ? Coder en Ruby on Rails ne nécessite pas de connaissance en programmation objet jusqu'à un certain point.
  • Ruby on rails est basé sur le design pattern MVC comme la quasi totalité des frameworks web.
  • Rails utilise l'ORM très souvent proposé par les framework (ex : propel dans Symphonie)
  • Rails est un framework intégré qui inclut des bibliothèques (prototype pour l'ajax) que l'on ne peut pas remplacer aisément.
Comment positionner l'écosystème Rails ? Il existe plus de 100 CMS en PHP contre une dizaine en Ruby, de même pour les applications de e-commerce et les autres applications. Ce qui n'est pas très éloigné du java et du .net. Ruby est-il l'avenir du web ? En tout cas, il en fait parti. De par son orientation, Ruby est une possibilité correspondant aux problématiques de certains projets. Toutefois, avant de choisir le framework, on choisit le langage. Pour le web, l'écosystème et les performances du PHP sont généralement des atouts importants. Après une période d'engouement, on voit ça et là des retours vers php : qu'est ce que fait Ruby que ne propose pas PHP ?




On considère généralement un Framework comme composé d'une architecture, d'une norme de codage et de composants. La tendance actuelle est la multiplication des frameworks qui propose chacun une architecture, une norme de codage et leurs propres composants. Pour chaque projet, le choix du framework nécessite de juger la pertinence de chacun de ces 3 ensembles de caractéristiques. Cela suppose la maîtrise et l'expertise technique d'un grand nombre de framework. Cette maîtrise est coûteuse ce qui restreint souvent les équipes à la maîtrise d'un framework. Une démarche plus générique basée sur une architecture adaptable et sur des composants empruntés aux différents framework apparait moins limitative, mais aussi moins guidée. Les frameworks sont donc en plein mouvement. C'est sur ces briques que le web des 10 prochaines années se construit.



Quelques Réfèrences :
http://blog.assembleron.com/2007/04/19/open-source-scaling-ruby-vs-php/ http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html http://www.fredcavazza.net/2005/03/30/techniques-de-developpement-web-une-revolution-en-cours/