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 là?
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’à… »
Rails est loin du niveau d’Hibernate en ORM, bien des choses sont offertes par Hibernate et pas par Rails (Active Record en l’occurence), alors que Rails ne propose rien qu’Hibernate ne fasse pas. De plus, Hibernate n’est pas natif en Java, mais JPA est intégré à JEE lui.
L’intégration est une bonne chose, mais elle à un coup énorme lorsque ce qui est intégré ne correspond pas parfaitement au
Hello, waddle
je n’ai pas assez d’expertise et de recul actuellement pour te contredire: Java n’a pas de concurrent actuellement quand à tout ce qu’il permet de faire.
Mais pour le moment, RoR me semble parfaitement à même de m’offrir, en très peu de temps, une intégration aboutie sur bien des points que je souhaite développer uniquement en web, sans être obligé de prendre Java, bien