Apprendre RubyOnRails quand on vient de php…

Posted by Pierre Rigal on janvier 01, 2007

rubyornotruby Et bien c’est pas si simple !

Loin de moi l’idée de pousser un coup de gueule contre Rails… seulement, à l’heure où chacun fait le bilan de l’année passée, je me suis dit, “tiens, j’en suis où moi avec Rubyonrails ?”.

Je vais pas étaler ici tout ce que je sais sur Rails, c’est pas vraiement le but de l’article, j’ai plutôt envie de montrer comment je suis “tombé dans la marmitte”…

Et surtout comment j’essaye de ne pas m’y noyer !

Get Excited

Tout à commencé il y a environ 6 mois, un ami m’a fait découvrir ce framework hémergeant appelé RubyOnRails. J’ai donc fait le tour du site officiel et comme tous, je suis tombé sous le charme des fameux screencasts et notemment celui qui montre comment en 15 minutes se construire son blog perso

Je suis généralement interressé par la nouveauté, assez alerte sur les dernières technologies web et j’avoue que j’ai été assez impressionné par les mécanismes que laissaient entrevoir ces petites vidéos. Je decida donc de m’y mettre.

Moi et Rails

Moi, j’étais (je le suis toujours d’ailleurs) un programmeur PHP4 (le 4 à son importance !). J’ai fait mon premier site internet environ en 99, je suis donc passé (avec plaisir) de l’ère du tableau à celle du CSS, de l’ère du site vitrine à celle de l’application sur le web et de l’ère du site “from scratch” à celle du CMS… Seulement il y avait un cap que je n’avais pas (totalement) franchi, celui du php4 au php5, en gros celui de la programmation procédurale à la programmation orientée objet.

J’ai donc commencé à me renseigner sur Rails, et, toujours sur les conseils de Flornet j’ai entamé la lecture du “livre saint” du programmeur Rails, j’ai nommé Agile Web Development with Rails. J’ai donc assez vite écrit mes premières lignes de code… surtout par “analogie” (comprenez “copié collé du bouquin”). Bref je faisais des trucs, mais généralement sans saisir les tenants et les aboutissants…

Finalement, cette étape de découverte à été très rapide et en quelques jours j’ai eu l’impression de savoir programmer en Ruby avec Rails. (J’ai bien dit l’impression !) La suite fût moins rose…

Le début des ennuis ;)

Dès que j’ai voulu m’éloigner des sentiers battus (en gros lorsque j’ai voulu faire autre chose que ce que me dictait le bouquin) je me suis de suite senti perdu, incapable de transformer ce que j’avais en tête en lignes de codes intelligibles… J’ai alors fait face à de nombreux problèmes en même temps : 1. En fait je n’avais pas encore compris ce qu’étais le fameux design pattern appelé MVC, j’avais donc du mal à le mettre en pratique. 2. Bien que vus à l’école, les principes de la programmation objet ne sont pas encores naturels pour moi, il m’a donc fallu revoir les bases… 3. RubyonRails est basé sur Ruby… et pas sur PHP. il faut donc apprendre Ruby avant d’apprendre Rails. (Et c’est un des trucs les plus frustrant, car une fois que l’on a compris comment MVC marche on a envie de faire plein de choses qu’on savait faire instantanément avec php et qu’aujourd’hui on ne sais plus faire avec Ruby…) Il a donc fallu re-apprendre à concaténer des chaines, à manipuler des nombres, à utiliser de nouvelles structures de contrôle et aussi s’habituer à la logique “Ruby”. 4. Le mécanisme de Rails est simple au premier abord mais nécessite un peu plus d’étude si l’on veut en utiliser tout le potentiel. (Je pense aux fixtures, aux plugins, aux engines, et à bien d’autres choses qui font que Rails est puissant mais pas si simple à maîtriser au final.)

Alors voilà, comme je le disais en intro, j’étais tombé dans la marmitte, il fallait maintenant remonter à la surface ;) Ca m’a bien pris 5 mois (attention je ne parle pas à temps plein, je travaille et j’ai aussi une vie sociale !) en lisant et en travaillant en soirée de temps en temps…

Un peu de répit !

Donc une fois que l’on a bien compris ce que c’est que MVC, qu’on commence à se débrouiller (un peu) avec Ruby et que les mécanismes de Rails ne sont plus aussi flous, on se sent mieux, on se sent même presque bien ! J’ai donc pu sortir des sentiers battus sans pour autant me retrouver complètement perdu, j’ai créé des petits projets avec Rails, j’ai même commencé à manipuler Ajax grâce à toutes les facilitées proposées par le framework.

Ce n’est qu’à ce stade là qu’on peut effectivement dire que Rails c’est bien. Je ne dirai pas que je suis maintenant plus rapide avec Rails qu’avec PHP pour faire la même chose (car je passe encore beaucoup de temps à apprendre Ruby) mais je pense que le cap n’est pas loin et que plus tard pour faire la même chose je serais plutôt 2 fois plus rapide avec Rails qu’avec PHP…

Alors finalement, tout est bien qui finit bien ? Pas si sûr…

Il est beau mon projet !

Oui mais voilà, à part moi et ma moitié, y’a pas grand monde pour en témoigner !

En effet, Rails souffre selon moi d’un gros problème : c’est une réélle horreur à héberger (et je pèse mes mots !). C’est un soucis que j’ai eu rapidement en commençant Rails. Le but d’un site Internet étant de le diffuser, quoi de plus normal donc que de chercher à s’héberger ?

A l’époque ce n’était encore que mon blog en rails (sous Typo) que je voulais déployer, et même avec l’aide de Google ce ne fut pas une mince affaire… J’ai d’ailleurs finis par écrire un tuto pour venir à bout de l’installation de Typo chez HostingRails (un hébergeur gratuit RubyOnRails).

Ensuite, je me suis très vite interressé à la façon d’héberger une application RubyonRails de manière relativement stable et efficace. Par la même occasion je faisais l’acquisition d’une Dédibox qui allait être le théatre de tous mes essais…

J’ai donc tenté à plusieurs reprises de faire une installation de Rubyonrails mais je ne suis jamais arrivé a quelque chose qui me convenait soit parceque je ne prenais pas le temps de tout comprendre soit parceque les multiples recompilations rendaientt mon système plus instable qu’autre chose…

Ce n’est que pendant ces vacances de noël que je suis enfin venu à bout d’une installation qui me convienne (Debian + apache non recompilé + php + rails + mongrel + mongrel_cluster + subversion + trac + capistrano). Je ferai surement un article à se sujet pour que ça puisse aider d’autres personnes car je n’ai rien trouvé de complet sur le net.

Bref c’est long, et selon moi ce n’est pas à la porté du premier venu (je veux dire par la que monter un serveur LAMP et déployer un SPIP par exemple c’est trivial à coté de ce qu’il faut faire pour obtenir la même chose pour Rails.)…

Alors au final ?

Six mois après mes début avec Rails, mon bilan est… bon ! Très bon même. J’ai appris à programmer objet, j’ai compris le design pattern MVC, j’apprends encore Ruby, j’ai énormément appris en adminisitration système, notemment sur l’utilisation de subversion, de mongrel et de capistrano et surout je pense maintenant avoir des bases solides pour progresser avec Rails.

Si je devais conclure en reprennant le titre de mon article je dirais qu’apprendre RubyOnRails quand on vient de PHP(4) c’est passionant mais ce n’est vraiement pas évident. Il ne faut pas s’attendre à une évolution logique en passant de php4 à RubyOnRails, il vaut mieux tout oublier et repartir de zéro, les façons de penser sont complètement différentes. C’est un peu comme l’apprentissage de l’anglais, si tu penses en français pour parler en anglais tu finis forcément par t’embrouiller…

Alors, même si l’hégémonie actuelle de php4 n’est pas prête de se terminer au profit de Rails ou d’un quelconque autre framework, il y a fort à parier que le web de demain sera de plus en plus professionalisé et que l’utilisation de la programmation objet et celle du design pattern MVC ira grandissante… donc sautez sur les Rails et ratez pas le train !

Trackbacks

Use this link to trackback from your own site.

Comments

Leave a response

  1. Flornet lun, 08 jan 2007 13:29:21 CET

    Hey Salut Pierre !

    moi je viens de découvrir que je pouvais rajouter des méthodes à mes classes plutôt que d’utiliser des helpers … alors tu vois tout n’est pas perdu pour toi !!

    Ca doit parraître con non ? :)

  2. Pierre lun, 08 jan 2007 16:37:36 CET

    pas mal celle là ;)

  3. mizoutch sam, 20 jan 2007 19:04:07 CET

    ça fait plaisir de savoir qu’on est pas tout seul à essayer de s’accrocher aux rails, je suis encore au début entrain de jouer à l’apprentit sorcier avec les Plugins et Subversion. Bravo! pour la Dedibox, surtout que la doc manque et la communauté francophone n’est pas encore assez developpée. Dans mon cas je comptais utiliser Kimsufi que Dedibox, et pour cela j’ai un cobaye a qui j’essais de lui faire avaler du Debian avant le déploiement final. Bonne continuiation, et bon courage !!

  4. PoMM3 mer, 30 mai 2007 13:11:43 CEST

    Analyse très bonne que je partage à 100%. Mais je pense que le gain n’est pas seulement au niveau du language et de l’administration mais bien dans la façon d’apprendre à progammer autrement : Apprendre à tester ton programme, procédurer le déploiement, faire du staging, concevoir avant de coder, etc…

    Une vraie lecon de gestion de proj!!

    En tout cas bravo pour avoir le temps de transmettre tout ça sur ton blog.

    C’est une façon de poser ta pierre à l’édifice (et il en faut pour rattrapper l’énorme travail qu’à effectué celle de PHP)

  5. pligg.com jeu, 31 mai 2007 12:35:50 CEST

    Passer de php à rubyonrails…

    Témoignage sur l’apprentissage de RubyOnRails par un programmeur php….

  6. Laurent Benkemoun mer, 30 avr 2008 17:17:29 CEST

    Merci pour ce blog, Pierre Je travaille chez beezbox depuis quelques mois , comme toi j’ai sauté la programation objet, je m’étais mis à flash et ActionScript.

    Ici on developpe des applications “social network” genre de facebook www.beetnic.com par ex . et quand je me suis presenté ici la première question fût : “tu connais ruby on rails ROR pour les intimes. SHIT pensais-je i lost the job man ! Eh bien

  7. Laurent Benkemoun mer, 30 avr 2008 17:18:53 CEST

    Ah il en manque les trois quart !

  8. Pierre Rigal mer, 30 avr 2008 18:11:42 CEST

    Oui il en manque les 3/4 :) Dommage c’était intéressant !

Comments (Syntaxe Markdown)