‘Rails’

Mon stage en Ruby on Rails

Mardi 5 août 2008

Comme dis dans un billet précédent, je vais travailler lors mon stage sur un projet en Ruby On Rails. Mais pourquoi Ruby On Rails ?

A l’origine, c’était dans le cadre de mon école : Supinfo. En effet, celle-ci a décidée depuis cette année de demander à des entreprises de fournir des projets aux étudiants à réaliser en groupe durant toute l’année. Je ne vais pas revenir sur les débordements que cela a occasionné : Simple sous-traitance, exploitation des étudiants à des fins commerciales, bref… Dans l’ensemble, c’est une très bonne mesure, pour les raisons suivantes : Vrai cas d’études, Diversité dans les projets, Relation entreprise, autonomie face à un interlocuteur qui n’est pas l’école, etc… Pour notre part, nous avons sélectionné un projet de veille principalement technologique. Nous avons donc travaillé pendant quelques mois avec la société en question, nous la remercions d’ailleurs pour les moyens mise en œuvre : Bonne communication, Achat de e-Books, Mise en place d’un serveur dédiés pour les tests et la mise en production. Notre travail a été grandement complimenté, nous sommes arrivés 1er sur les 5 groupes travaillant sur le projet et nous avons été noté 20/20.

Dans un premier temps, il nous fallait choisir l’environnement de travail, nous avons donc longtemps hésité entre plusieurs framework (Pas de “From Scratch”, pas le temps et c’est désormais plus un choix valable) : Symfony, Zend Framework et Ruby On Rails. Puisque nous étions deux (Moi-même et Fred) dans le groupe à avoir fait beaucoup de PHP, notre formation n’aurait pas été longue et nous aurions pus facilement chapeauter les autres. La question qui se posait, était donc “quel framework pour les autres ?” (Les autres : Daniel, Jérome et Antoine). Après étude, la formation sous Ruby était moins longue, puisque notamment basé sur des conventions. Et aussi, car je m’intéressais au langage et que je les ai bien soûlés pour faire du RoR, et j’ai montré la fameuse vidéo : “Toi aussi code ton blog en 15min !“, ça fait toujours son effet… En plus de cela, pour démarrer, il n’y avait pas besoin d’environnement lourd (LAMP/WAMP) puisqu’un serveur est intégré au framework et SQLite suffit pour la base de donnée. Pour le développement, nous utilisions NetBeans, perso je le trouve pas mal, Daniel lui préférait Eclipse. Une fois commité via un Subversion sur le serveur de test, celui-ci basculait automatiquement sous MySQL 5, gain de temps pour les tests grandeur nature. On avait aussi mis en place un wiki pour récolter les informations au début et une mailing-liste pour se tenir au courant mutuellement. Les outils étaient OK, so let’s go !

Les résultats ne se sont pas fait attendre, tous les CRUD étaient créés en une semaine, le suivi facile, une fois compris l’architecture Controller/Model/Helper/Vue, on sait où est quoi, pas de recherche dans plein de fichiers… Un peu dur de faire comprendre l’intérêt des migrations a des gens qui commit tout les 16 du mois, mais dans l’ensemble, c’est bien passé, et avec les fixtures (Données de pré remplissage de la base de donnée), ils pouvaient réinitialiser leur base et remettre toutes les données comme leur compte, trop cool !

Je suis content, on a pas perdu de temps, on a tenu nos deadlines sans trop se presser… Le Ruby On Rails, ça marche ! C’est productif !

Le but premier de ce post était de faire une comparatif des plugins de moteur de recherche en Rails, mais je voulais d’abord raconter notre épopée. Voilà, c’est fait ! Le billet en question est remis à demain…

Rails scale ? Of course !

Dimanche 13 juillet 2008

Depuis quelques mois, je développe mes sites en Ruby On Rails. En effet, je reste avant tout un geek et cela m’amuse de temps en temps de développer selon mes besoins des applications Web. La plupart d’entre elles restent des prototypes, une fois la difficulté passée ou le core terminé, je me lasse et je passe à autre chose…

La question étant souvent la même : Pourquoi après 5 ans sous PHP, ce changement “radical” ?

Je vais tacher de me résumer en une simple liste de 10 points :

  1. Les CRUD assistés. Un gain de temps non-négligeable. (Toi aussi code ton blog en moins de 15min ;) )
  2. Le modèle MVC.
  3. Une propreté/structure dans le code du fait du modèle forcé en MVC.
  4. Une richesse de centaines de tips/helpers intégrés au framework. Là aussi un gain de temps et d’effort.
  5. Une communauté active et structurée.
  6. Une diversité de plugins hallucinante, pour la plupart orienté production, comme des daemons d’indexation pour des moteurs de recherche, des interface pour système de paiement en ligne, de tag, de template, c’est sans-fin… Pas de scripts tiers à intégrer. Logique différente.
  7. Database agnostic. Assez cool pour une migration de MySQL vers PostgreSQL (Du vécu… ;) ).
  8. JS/AJAX intégré et assisté. Malgré le fait que je remplace systématiquement Prototype par jQuery.
  9. La maintenance est bien plus simple ! Dépends du petit 3.
  10. Le Ruby est, au final, un langage agréable à coder. Basé sur la convention plutôt que la configuration, on ne recode par la roue…

Il y a des trolls en ce moment sur les performances de Ruby On Rails, sa stabilité et sa capacité à prendre la charge. Bref, comme dit au début du paragraphe, ceci est un troll. Je vous invite à faire quelques recherches pour vous en rendre compte. Ceci est parti de Twitter et de son downtime systématique, cela viens de Twitter et non du Ruby. La preuve, ni YellowPages qui vient complètement d’être refait en Rails et Scribd ne sont sujets à cette polémique. Cela vient, je pense, de la sur-utilisation de l’API de Twitter (+ de 3000 requètes SQL par seconde).

Blog et projets

Lundi 26 mai 2008

On commence par une information primordiale : Passage sous Wordpress 2.5.1 ! Bref…

Mon engouement pour le Ruby On Rails ne cesse pas. Je commence même mes propres projets :

Rss2Us : Portail de gestion de flux RSS, avec filtre bayesien. Cet algorithme est utilisé dans la détection de spam, j’ai un peu adapté le système pour faire de la recommandation d’article et de l’auto-tagging. Le système n’est pas abouti mais les résultats sont au rendez-vous, je dirais qu’il fonctionne à 70% pour le moment. En effet, tout dépend du temps d’apprentissage du filtre, puisqu’il s’adapte à chaque utilisateur du système, il apprends ses goûts. Pour l’auto-tagging, ça fonctionne pas encore très bien, mais la phase de test à été un peu court, je ne peux pas trop me prononcer, les résultats ne sont pas mauvais, mais il y a une grosse marge d’erreur, il a tendance à “sous-tagguer”, malgré un seuil de tolérance plus bas que celui de la recommandation. Ce projet est temporairement en pause au profit du suivant.

ImagR : Galerie photos développer en Ruby On Rails. Un FlickR à la portée de tous. Les features sont nombreuses, et les produits dérivés arrivent vite. Ça code, ça code… :) Je ferais sûrement un billet un peu plus long d’ici 15 jours pour le lancement d’une béta de test.

Pour ceux qui seraient intéressés, j’ai installé un Redmine (Gestionnaire de projet) et mis en public ces deux projets : http://dev.e-lam.net/

En Vrac

Vendredi 2 mai 2008

Un petit en vrac, car ça prends 5min.

  • Streamzy - rechercher et écouter de la musique en ligne. Propulsé par le bot seeqpod, je dis bot, car ce site se balade sans cesse sur la toile et indexe tout MP3, Vidéos et articles… Un Google Multimédia, il est déjà bien fourni et deviens un concurrent sérieux de notre fameux Deezer. Streamzy est juste une interface plus propre et plus user-friendly de seeqpod, une bonne nouvelle.
  • Ruby On Rails : Arrivé de la version 2.1 (je connais pas bien le changelog). Je m’amuse vraiment beaucoup avec ce langage, simple, puissant. Malgrés quelques trolls sur les performances, il répond à beaucoup de besoins ! A savoir par exemple que les pages jaunes sont propulsées par RoR, pour moi un gage de stabilité.
  • A ce titre, je cherchais un projet OpenSource en RoR pour me faire la main, je l’ai trouvé : Redmine. Logiciel de gestion de projet vraiment génial : bien pensé, light et propre. Je vous invite vraiment à aller regarder ça de plus près. J’ai commencé à l’utiliser professionnellement, mon boss aime beaucoup et moi aussi. Il manque l’exportation vers iCal, que je suis en train d’implémenter et avec un peu de chance ça sera dans la prochaine version du logiciel :)