Cette présentation a été réalisée dans le cadre des Rencontres Mondiales décentralisées du Logiciel Libre (RMLLd) qui se sont déroulées du 1er au 3 Juillet 2011 à Saint-Joseph (Ile de la Réunion).
Quelle place pour le framework Rails dans le développement d'application web
1. Qui suis-je ?
Mathieu Fontaine, 25 ans
Diplômé de Supinfo (promo 2008)
Développeur Web (depuis 2005)
Chef de projet / Développeur Rails (depuis 2008)
about.me/spidou
2. Quelle place pour
le framework Ruby On Rails
dans le développement d’applications web ?
4. Tout est objet
Pas de type primitif
1.class # Fixnum
7.next #8
"Vive les RMLLd".length # 14
true.class # TrueClass
Pas d'opérateur
1+2 <=> 1.send('+', 2) <=> 1.+(1)
+ est une méthode de Fixnum
1.methods.sort # ["%", "&", "*", "**", "+", "-", ...]
5. Syntaxe naturelle
PHP Ruby
for ($i = 0 ; $i < 7 ; i++) { 8.times do
echo "Hello World!"; puts "Hello World!"
} end
if (say_hi()) { puts "Hello World!" if say_hi?
echo "Hello World!";
}
6. Hello World!
Java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
C
int main(void) {
printf("Hello World!n");
return 0;
}
Ruby
puts "Hello World!"
7. Moindre surprise
La touche "F1" affiche l'aide
La touche "Suppr" envoie le fichier dans la corbeille
Ruby a été écrit en respectant ce principe,
et incite à en faire de même
Voici un exemple avec la convention de nommage des méthodes :
method_name
dangerous_method!
question_method?
setter_method=
12. ActiveRecord
Modèle Base de données
class User < ActiveRecord::Base users
end id
username
created_at
updated_at
User.all # (select * from users)
@user = User.first # (select * from users limit 1)
@user.username # "spidou"
14. RESTful
Opération Site classique (en PHP) Site RESTful (en Rails)
Lister les utilisateurs GET /list_users.php GET /users
Créer un utilisateur POST /create_user.php POST /users
Afficher un utilisateur GET /show_user.php?id=1 GET /users/1
Modifier un utilisateur POST /edit_user.php PUT /users/1
Supprimer un utilisateur GET /delete_user.php?id=1 DELETE /users/1
Lister les commentaire d'un article GET /list_comments.php?post_id=1 GET /posts/1/comments
GET /delete_comment.php?
Supprimer un commentaire DELETE /posts/1/comments/1
id=1&post_id=1
16. Arel (1/2)
Rails 2
@posts = Post.find(:all, :conditions => { :published => true })
# Exécution de la requête SQL
# @posts reçoit un tableau d'éléments
Rails 3
@posts = Post.where(:published => true)
# La requête SQL n'est pas exécutée à ce moment
# @posts reçoit un objet de type ActiveRecord::Relation
17. Arel (2/2)
@posts = Post.where(:published => true)
if params[:order]
@posts = @posts.order(params[:order])
end
@posts.each do |p|
...
end
# La requête SQL est exécutée maintenant !
21. Github (1/2)
Hébergement et gestion de développement de
logiciel grâce à Git
Pas de publicité
Gratuit pour les projets open source
Navigation intuitive
Facilite et incite la création de forks
22. Github (2/2)
Passe devant Sourceforce et Google Code en juin 2011
Github : 1 153 059 commits (54%)
Sourceforge : 624 989 commits (30%)
Google Code 287 901 commits (14%)
2 millions de dépôts
1 million d'utilisateurs prévus en septembre 2011
Quelques projets hébergés sur Github :
PHP, Perl, Python, Symfony, Rails, Facebook, Diaspora
Redmine, JQuery, Script.aculo.us, Git, Linux
23. New Relic (1/2)
SaaS
Monitoring et suivi des performances
Aucun serveur à installer (cloud)
Interface utilisateur extrêmement simple
Un plugin Rails à installer, et ça marche !
25. Heroku (1/2)
Déploiement ultra simplifié via Git
Manipulations en ligne de commande ou via le site web
Mise à jour des ressources (CPU, mémoire) en fonction
de la charge
43 add-ons (sendgrid, new relic, cron, memcache, etc.)
+ 153 300 applications déployées
28. Yellow Pages
Avant 2007
1 500 requêtes/sec
JavaEE + EJB = problèmes de maintenabilité, de design
125 000 lignes de code (0 test)
Après migration vers Rails en 2007
20 000 lignes de code (tests compris)
Réécriture en 3 mois (5 développeurs)
Performances égales
29. Twitter (1/2)
Créé en 2006
Développement initial en Rails
Fin 2008 :
100 million de tweets par trimestre
Lève 15 million de dollars
Valorisé à 500 million de dollars
30. Twitter (2/2)
2009 : Victime de son succès, Twitter migre progressivement
vers Scala
Fin 2010 :
Lève +140 million de dollars
Valorisé à 3.7 milliard de dollars
Rails = rampe de lancement de projet
31. Osirails
ERP destiné aux PME/PMI
Adapté à la fabrication sur mesure
Modulaire
Module Tiers (gestion des clients, fournisseurs, etc.)
Module RH (gestion des ressources humaines, congés, etc.)
Module Stocks (gestion des articles, inventaires, etc.)
Module Ventes (gestion produits, devis, facture, etc.)
...
En cours de développement chez EMR
En phase de test, bientôt en production
github.com/spidou/osirails/fork