J‘ai subi pas mal de déboires, ces derniers jours, du fait principalement de l’inadéquation du livre de Dave Thomas avec la version actuelle de Rails.

Mais cela a tout de même eu pour conséquence de bien me faire manier la mise en place de Rails, en le triturant en tout sens, et en testant un certain nombre de configurations et de possibilités avant d’arriver au but affiché : parvenir en Rails 2.2.2 à me retrouver en page 79 du fameux livre.

Ca n’a l’air de rien, comme ça, mais je vous assure, ce fut un défi de pratiquement 3 soirées complètes!
Non, ne riez pas, au fond! Je vous assure que j’ai trop grincé des dents pour mériter vos railleries. Et puis, j’y suis parvenu, tout de même…

Et qu’est qu’il y a, sur cette fameuse page 79?
Il y a le principe du « Scaffolding« . Ou plutôt, d' »échafaudage« , en français.
Ce principe montre, à lui seul, à quel point Rails permet au développeur d’avancer à vive allure : Rails crée de lui-même une structure – l’échafaudage – avec très peu de développement. Et vous allez voir, même pas du tout…

Et pour vous le prouver, je m’en vais vous montrer à quel point c’est puissant!
Pour cela, je vais écrire toutes les étapes, que vous pourrez reproduire vous-même chez vous, sans danger, malgré l’extrême vélocité de cette expérience!

Commençons par la base: le néant!
Bah oui, je n’ai rien, simplement un répertoire vide et la console Rails d’InstantRails ouverte:

Et là, je lance la toute première commande magique, qui n’a pas d’autre nom que Rails, juste pour créer mon projet et l’ensemble des sous-répertoires et fichiers possiblement utiles. Je rajoute juste un paramètre pour exiger que ma database soit en MySql:

Rails rapido –database=mysql

Cela me crée mon projet – appelé pour le coup « rapido » -, et toute une arborescence que je n’expliquerai pas – parce que j’ai la flegme et que, pour le moment, je ne suis pas à même de totalement l’expliciter…


Ensuite, en me plaçant dans le répertoire que je viens de générer, je crée ma database en MySql avec une ligne générique:

Mysqladmin -u root create rapido_development

Cette action ne produit rien de visible dans la console, sauf de faire apparaître un répertoire « rapido_development » dans le répertoire \mysql\data\ d’InstantRails:


Et c’est maintenant que je décide de faire intervenir l’artillerie lourde avec le « scaffold« :

ruby script/generate scaffold personne nom:string prenom:string age:integer description:text

Vous ne le savez pas encore, mais je viens de créer une application web avec cette instruction, qui me permet de gérer une table nommée « personnes » – et non « personne » -, qui a pour données le nom, le prénom, un âge et une description de la personne…
Qu’est ce que j’entends par gérer? Je veux dire que j’ai désormais créé des pages web de saisie de ces informations, avec lecture, mise à jour et effacement…

Et mais bien sûr! Et la marmotte, non seulement elle enveloppe le chocolat dans le papier alu, mais en plus, elle le fume!!!

Non, non, je ne rigole pas!
Il suffit ensuite de lancer la commande:

rake db:migrate

qui va mettre à jour la base de donnée telle que je l’ai définie!

Pour voir ensuite le résultat sur Firefox ou IE, il suffit de déployer son serveur par la commande suivante, toujours saisie dans la console:

ruby script/server

Et d’ouvrir votre navigateur préféré sur l’url suivante:

localhost:3000/personnes

Et vous obtenez l’appli suivante, dans laquelle je vais insérer 3 lignes:



Je vais créer 2 autres personnes par cette application, histoire d’alimenter ma base; et on obtient enfin la liste suivante, sur laquelle je peux voir, mettre à jour ou effacer chacune des lignes:


Bluffant, non?

Si vous ne me croyez pas – et ô combien je vous comprends, je me crois si peu moi-même lorsque je relis cela – je vous enjoins de tester cela chez vous!
Installez d’abord RoR tel que je l’indique dans ce post si ce n’est pas déjà fait, et suivez les étapes ci-dessus!
Pour le coup, j’ai compris pourquoi nombre d’aficionados de RoR n’ont pas d’EDI: je n’ai même pas eu besoin d’un notepad! La console Rails a suffi…

Mais comment est-ce possible? Qu’a donc fait le bidule qui a contruit le truc pour donner ce machin????

Je ne vais pas dire que je suis apte à tout expliquer, mais si j’ai bien saisi, Rails suit la vue MVC à la lettre. Cela lui a donc fait créer le contrôleur « personnes« , générer la table « personnes » liée au modèle « personne » et les vues pour gérer ces données à l’écran.


Ainsi, en appelant par url le contrôleur « personnes« , celui-ci invoque le modèle et relaie les données de la base dans la vue de gestion.
Ces vues sont en .rhtml ou .erb, c’est à dire du code ruby qui va générer, grâce à l’interprêteur, le HTML pour le navigateur.
Et le tour est joué?

C‘est pas beautiful, ça?
Bon, trêve de rigolade! Après les mots magiques rails et scaffold, y’a quoi???? J’y retourne et vous tiens au courant un de ces quatre!!!