En tant que développeur java, il est important de regarder de temps à
autre ce qui se fait chez les voisins afin de ne pas rester sur une certaine
vision, voir comment une problèmatique se résoud dans une autre
communauté.
Rails aura 2 conférences, une pas technique et l'autre technique.
Pourquoi Rails est génial ?
La première partie est faite par Camille Roux, jeune développeur qui
pratique le développement Ruby depuis 1 an et a 3 ans de développement web
derrrière lui. Pour les plus curieux, son site perso :
http://www.camilleroux.com
Une question importante de se poser avant tout est : Qu'est ce qu'un bon
framework ?
Camille nous présente un nuage important de critères, parmis eux : pas
cher, rapide à développer, utilisé par beaucoup de monde, sécurisé, ...
Rails répond à tout ces critères.
Le langage à la base de Rails est Ruby, un langage interprété,
multiparadigme (aussi bien object que procédural). Ruby a été crée pour être
"un langage pour les hommes, pas pour les machines". En plus d'être
multiplateforme, il est aussi multi-implémentation :
-
Ruby, la plateforme de base
-
JRuby, pour nous les développeurs java qui voulons réutiliser toutes nos
bibliothèques
-
Rubinus, plateforme très prometteuse
Quelques chiffres sur Ruby :
-
14 000 gem (librairies pacakgé et facile à utiliser)
-
185 000 projet sur github
-
10 ème langage le plus utilisé
Ruby est assurement un langage incontournable.
Ruby On Rails est un framework basé sur ce langage. On peut l'appeler ROR
ou Rails pour les intimes. Ce framework a été initié par un développeur au nom
imprononcavle que toute la communauté nomme DHH.
Rails posséde une philosophie basé sur le fameux "convention over
configuration". On ne veut pas passer du temps du temps sur la config de divers
fichiers (parce que c'est assez chiant à faire), on préfère obéir à des
conventions comme nommer sa table de la même façon que son objet par exemple.
Un point de cette philosophie est l'agilité : on aime le déploiement facile, et
l'abondance de test.
Qu'est ce qui est si génial en Rails ?
-
Projet construit : on ne se casse pas la tête. Un autre avantage est qu'il
sera plus facile à intégrer un nouveau developpeur car il connait déjà les
conventions.
-
Migration : on créer un classe qui décrit les tranformations
-
Active record : les méthodes d'opérations comme save sont appelées sur
l'objet lui même
-
Scafolding : Génération de code MVC. Très pratique pour une développer
rapidement et facilement une interface d'admin
-
Environnement : Rails permet d'en définir facilement plusieurs : test,
dev, prod, autant qu'on veut... On peut aussi avoir des gems spéciaux pour un
env (test par exemple, log différents, base différente bien sûr, ...)
-
Sécurité : il est facile d'ajouter de la sécurité à son application
rails
-
Javascript : Prototype est disponible. Rails donne une certaine
abstraction dans l'utilisation de javascript, il est pa exemple possible de
faire un bouton de rafraichissement sans faire de javascript, rails le gère
pour nous.
-
Test : Avec Rails la partie test est très importante et fait parti du
projet. Une partie des tests sont générés à la création du projet. Rails
permets d'avoir du code testable tout au long du projet.
D'ici environ un mois, sortira Rails 3 :
Rails 3, c'est la fusion de Rails 2 et de Merb
Cette fusion des 2 projets donne un résultat très confortable au
développement.
Au programme de cette 3 ème version :
-
Modularité
-
Bundles
-
Performance
-
Support du html 5
Certains reprochent à Ruby d'être lent. Qu'en est il vraiment ?
Il faut d'abord savoir qu'il y a beaucoup de benchmark qui disent beaucoup
de choses, et sont parfois contradictoire. Selon de bons benchmark, il serait à
la hauteur de python et de php.
Mais les performances sont elles vraiment si importantes ?
Après tout, ce qui est le plus important, c'est la vitesse de
développement, la fiabilité, la facilité de maintenance. De plus, Ruby est
soutenu par une communauté. On peut ainsi trouver un gem pour chacun de ses
développement.
La forte présence de cette communauté permet un appentissage facilité par
des forms, des tutoriaux, des screencast, des conférences comme celle çi, et
bien sûr des livres
Qui utilise Rails ?
Beaucoup de sites, dont Yellow Pages (les pages jaunes américaines), White
Pages, Brightlite, Github, ....
Notons que la plupart de ces sites, sont à fort traffic et que rails tient
la charge.
Il y aussi des entreprises comme Amazon qui dont du ruby, même si on ne
sait pas vraiment ce qu'il en font.
Au niveau hébergement, il y a aussi de bons services cloud
:
-
Engine Yard : Permet de déployer sur Amazon EC2 et S3, de redimensionner à
chaud le volume de machine. Pour déployer, il suffit de lui indiquer où est le
repository github du code. Il permet aussi de faire le suivi de l'activité et
de faire des backup
-
Heroku : 2 lignes de commandes suffisent à déployer gratuitement. Lors du
déploiement, il s'occupera de télécharger les gems et leur dépendances. On
pourra aussi régler le volume de machines ou s'occuper de la configuration des
machines. Bien sûr, toutes les possibilités ne sont pas toutes gratuites.
Et pour le suivi de votre application, New Relic s'occupe du
monitoring.
Exemple d'un succès de Rails :
Yellow Pages, un site web à très fort traffic : 1500 req/sec.
Il y a quelques années, ils étaient en JavaEE avec des EJB et connaissait
des problèmes de design et de scalabilité. Le code était de 125 000 lignes et
ne contenait aucuns tests.
En 2007, ils ont adopté Rails et ont refait entèrement leur site
avec.
Pour des performances égales, leur code est passé à 20 000 lignes en
comptant les tests.
Cette refonte, a pris 3 mois avec une équipe de 5 développeurs.
Rails est un framework qui plait, c'est d'ailleurs pour celà qu'il est
copié : Grails ou Play!
Dans la salle quelques retours disent qu'ils n'est pas facile de faire du
Ruby/Rails sur Windows. Git ne facilite pas non plus le problème.
Camille nous dira que Git n'est pas tout obligatoire, mais qu'il s'agit
d'un produit que la communauté ruby adore.
Et pour finir, selon Camille, être développeur Ruby, c'est comme être un
guerrier avec un sabre laser : ce sont des passionnés qui en font et qui font
vivre.
Acte 2
Pour la 2ème partie de double présentation, c'est au tour de Maxime Menant
de s'y coller. Jeune aussi, développeur de 25 ans et qui travaille avec
Camille. Il nous fait aussi part de l'adresse de son blog :
http://blog.maximemenant.fr
"On vous a dit pourquoi c'est génial, maintenant on va vous le
montrer"
Ruby qu'est ce que c'est ?
-
Libre
-
100% objet
-
Interprété
-
Multii-Paradgime
-
Syntaxe proche langage naturel
-
Code compact
-
Méta programmation et c'est surtout ce qui fait sa puissance
Nous voyons d'abord les bases du langages : variables, contantes,
accesseurs, boucles, condition, symboles, tableau, hashmaps, définition de
classe, mixins.
Je ne rentrerai pas dans les détails sur ces derniers points. Ruby offre
un certain confort d'écriture.
Comme il l'a été dit, il existe plusieurs implémentations :
-
JRuby
-
IronRuby : pour .net
-
MacRuby : Objective C , maintenu directement par Apple
-
Rubinus, la nouvelle jvm ruby.
Nous voyons un exemple de Jruby de création d'une frame et de son
affichage. Le code mélange de Java et Ruby. Dans ce seule l'instantiation
change :
frame = java.swinf.JFrame.new()
Le reste sera comme en java.
Zoom sur les Gems.
C'est un peu comme des .deb : ça s'installe facilement (gem install XXX)
et ça installe aussi les dépendances. Bien qu'il existe beaucoup dendroits où
en trouver, la référence est
http://www.rubygems.org
Rails s'appuie sur 2 principes :
-
DRY : Don't Repeat Yourself
-
Convention Over Configuration
Au niveau architecture, on s'appuie sur les principes de REST et de
MVC.
S'en suit, un coding live, où Maxime développera une application de
gestion de tâches pour d'un projet.
Le code sera bien sûr codé sous Rails 3 dont la release finale verra
bientôt le jour.
Difficile de
En ligne de commande, le projet est crée avec toutes sa structure.
Une autre ligne suffira à créer une entitée Projet avec son interface
d'administration et ses tests.
Bien sûr, par défaut, il n'y a pas de validation. Ces régles se
définissent facilement et rapidement dans le code. Des "validates" seront ainsi
posé sur la présence ou la taille de certains champs.
Et pour sécuriser ? 2 lignes suffiront.
Cette présentation est assez convaincante de la puissance de Rails. On
voit aussi, que Play! S'en inspire beaucoup et en tire ce qu'il y a de bon. Ce
dernier était d'ailleurs lui aussi à la sophiaconf, présenté par Nicolas
Leroux, mais malheureusement en parrallèle de cette session.