Souvenez-vous le 3 février dernier, j’annonçais entreprendre la tâche ardue de lire la bible de Ruby on Rails, écrit par Dave Thomas, expert Ruby et David Heinemeier Hansson, créateur de Rails.

Et bien, près de 800 pages plus tard, que puis-je en dire, à part les deux billets de « démonstration » déjà postés ici et ?

Un bouquin pareil ne se lit pas comme un roman.
Aucun des bouquins lus à ce jour, et que j’ai déjà présentés, sur les aspects techniques ou de langages, voire de technologies web ne peut se lire facilement et en continu.

Et celui-ci ne déroge pas à la règle, tant il est dense et couvre un éventail monstrueux de possibilités.

Mais ce qu’il montre est tout bonnement prodigieux pour moi.

Je suis dans l’informatique depuis bientôt 12 ans, ai commencé par le gros système sur des système Cobol/Cics sous base oracle DB2; puis suis passé sur le distribué, en me cantonnant d’abord à comprendre le plug de progiciels dans nos architectures windows ou unix, sous des bases de données Oracle; puis en développant en VB pour lier tout ce petit monde; et enfin en touchant au monde de l’objet avec Java, sur des systèmes intranet.

Et bien ce bouquin a mis à mal mon univers. Non que je ne l’ai pas compris, mais j’ai pu voir par lui à quel point toutes ces heures passées sur des détails, sur des soucis techniques depuis des années auraient pu être évités par l’arrivée plus précoce de ce genre de framework, et par l’intégration dans nos métiers de ce genre d’outils.

Alors, qu’ai retenu sur ces 800 pages?
Comme je ne peux pas tout exposer sans refaire le livre, voici les points marquants à mes yeux sur les apports de base de Ror, sans plugin supplémentaire:

RoR suit le modèle ORM à la lettre :

Les tables – d’une base de données – correspondent aux classes, les lignes des tables aux objets et les colonnes des tableaux aux attributs des objets

Prenons un exemple pour expliquer cette phrase bien énigmatique :

Soit la table « villes » ayant pour colonnes fonctionnelles: « nomville« , « population« , « pays« .
Avec les données suivantes:

(à noter l’apparition d’une colonne « id« , automatiquement créée par Rails)

Le nom de la classe d’objet sera « Ville » – oui, au singulier et avec majuscule : Rails met au pluriel de lui-même, y compris pour les mots irréguliers, en tous les cas en anglais (exemple : person / people), mais ceci fait parti d’un autre débat prodigieux sur lequel je ne m’engagerai pas…

Les attributs « id« , « nomville« , « population » et « pays » par des méthodes qui ont des accesseurs du même nom.
Du coup, si je cherche le nom de la ville ayant pour « id » 2, je coderai ainsi:

nomdelavillequejecherche = Ville.find(2)
puts nomdelavillequejecherche.nomville

le système me rend « Mexico« 

Pour les minimalistes en nombre de ligne de codes souhaitant avoir la population de la ville « 3 », on pourrait écrire:

puts Ville.find(3).population

qui rend « 1.500.000« 

Evidemment, en Java, Hibernate fait un peu pareil, mais Hibernate est un plugin non natif, alors qu’ici, tout est intégré, d’origine; et les objets et attributs sont créés dès l’arrivée dans la base de données de la table « villes » : tout est généré par Rails
Et on va voir que bien d’autres choses sont intégrés dans RoR

La relation entre les tables, les accès à ces tables, la configuration de la base de données… Tout est toujours intégré dans RoR. C’est vraiment très bien conçu.
On ne revient jamais au SQL, on reste à écrire en Ruby

La gestion des sessions, des cookies, du cache, des mails…
Tout est géré de façon native dans RoR: on n’en sort jamais, tout est parfaitement borné et déjà pensé pour vous dans les normes les plus strictes et les plus sécurisés qu’offrent les solutions web.

– Les écrans, en HTML, sont revisités en Ruby. On code toujours en Ruby, même pour les fichiers HTML!

Ajax et le JavaScript ne dérogent pas à la règle : RoR encapsule tout!
Vous continuez à coder en Ruby, en manipulant des abstractions des bibliothèques Prototype et Script.Aculo.Us, qui sont intégrés dans RoR.

Comprenez bien que le côté fascinant de ce framework est de tout lier : vous n’avez pas besoin de connaissance approfondie dans les autres langages Web 2.0 : Ruby se suffit à lui-même, et Rails joue à la colle entre le reste du monde Web.
Et cette colle semble sacrément adhérer.

Un seul langage lui résiste, si je puis dire, c’est celui de la mise en page web, où rien ne semble échapper au CSS, qui s’implémente et s’imbrique parfaitement dans le monde de RoR.

En gros, me voilà maintenant armer pour décliner notre site en Ruby, avec l’aide de Rails.
Comme on dit « Y’a plus qu’à… »