Ruby on Rails
Rencontres Mondiales du Logiciel Libre,
Mont-de-Marsan, vendredi 4 juillet 2008
Présentation de
Ruby on Rails
Rencontres Mondiales du Logiciel Libre,
Mont-de-Marsan, vendredi 4 juillet 2008
• un tour d’horizon de Ruby on Rails
• les concepts, les principes mis en oeuvre
• un aperçu du code
RMLL 2008 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT
Qu’est-ce que Ruby on Rails ?
MVC
2 Modèle
1
Navigateur 3
Contrôleur
6
Vue
http://zlab.fr/books/show/1
Conventions
vs.
Configuration
RMLL 2008 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT
Ruby on Rails : des conventions ( )
ActiveRecord
ActiveRecord, c’est :
• le M dans MVC
• un Object Relational Mapper
• les tables sont représentées par des classes
• les enregistrements par des objets
• les champs par des attributs
<Book>
id = 1
title = ‘The Ruby Way’
Table “Books” author = ‘Hal Fulton’
id title author
1 The Ruby Way Hal Fulton <Book>
id = 2
2 Ruby for Rails David A. Black title = ‘Ruby for Rails’
author = ‘David A. Black’
• lecture des attributs : b.title # renvoie 'Agile Web Development with Rails'
• création et sauvegarde : b.create :title => 'Ruby in a Nutshell', :author => 'Matz'
• suppression : b.delete
b = Book.find 1
b = Book.find :first, :conditions => ['title LIKE ?', '%Ruby%']
b = Book.find :all, :conditions => ['title LIKE ?', '%Ruby%']
b = Book.find_by_author 'Hal Fulton'
b = Book.find_by_title 'Ruby for Rails'
c = Category.find_by_label 'Fiction'
b = Book.new
b.title = 'The man who disappears'
b.author = 'Jeffery Deavers'
b.category = c
b.save
c = Category.find_by_label 'Computing'
c.books
belongs_to :category
def validate
self.errors.add :author, ’Not actually an author’
if self.author == 'Why the luck stiff'
end
end
ActionView
ActionView, c’est :
• le V dans MVC
• un système de génération d’interface Web, avec :
• des layouts (gabarits)
• des pages qui s’intègrent dans les layouts
• des balises spécifiques pour intégrer du code Ruby (eRB)
• des fichiers .rhtml dans app/views/
Exemple de layout :
<html>
<head>
<title>RMLL : Ruby on Rails demo</title>
</head>
<body>
<%= yield %>
</body>
</html>
Exemple de vue :
<h1>Titre du livre</h1>
par <i>Auteur du livre</i>
Page générée :
<html>
<head>
<title>RMLL : Ruby on Rails demo</title>
</head>
<body>
<h1>Titre du livre</h1>
par <i>Auteur du livre</i>
page générée l’après-midi du 04/07
</body>
</html>
ActionController
ActionController, c’est :
• le C dans MVC
• le chef d’orchestre
• il contient la logique de l’application
• il interroge le modèle
• manipule les données récupérées
• détermine la vue à afficher à l’utilisateur
http://zlab.fr/books/show/1
Base de
données
class BooksController < ApplicationController
def show
end
end
2 Modèle
1
Navigateur 3
Contrôleur
6
Vue
def show
@book = Book.find params[:id]
end
end
def show
begin
@book = Book.find params[:id]
render :layout => 'special'
rescue
redirect_to :controller => 'error', :action => 'raised',
:id => params[:id]
end
end
end
def show
# ...
end
def delete
@book = Book.find params[:id]
if @book.delete
redirect_to :action => 'list'
else
flash[:notice] = 'Erreur à la suppression'
render :action => 'show'
end
end
end
RMLL 2008 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT
Ruby on Rails
ActiveSupport
ActiveSupport, c’est :
• le S dans Sympathique
• des extensions des classes de base de Ruby
• pour simplifier le développement
• améliorer la lisibilité du code
ActiveSupport, c’est :
1.kilobyte # => 1024
1.megabyte # => 1048576
Mais encore ?
(ce dont je n’ai pas le temps de vous parler)
Ressources
Sites Web :
• le site officiel Ruby on Rails (http://www.rubyonrails.org/)
• le site officiel Ruby (http://www.ruby-lang.org/)
• les sites et blogs axés “Web 2.0” (PeepCode, ...)
Listes de diffusion :
• les listes officielles @rubyonrails.org
• Ruby-Talk et Ruby-Core @ruby-lang.org
Groupe de discussion :
• comp.lang.ruby
IRC :
• #rubyonrails sur le réseau Freenode
• #ruby-lang sur le même réseau
Livres :
• Agile Web Development with Rails, 2nd edition, (The Pragmatic Programmers)
Sites Web :
• le portail RailsFrance (http://www.railsfrance.org/)
• le portail RubyFrance (http://www.rubyfrance.org)
• le site officiel Ruby, en Français (http://www.ruby-lang.org/fr/)
• les nombreux blogs de la communauté francophone
• http://boldr.org/, de Nicolas Mérouze
• http://frederic.logier.org/, de Frédéric Logier
• http://blog.shingara.fr/, de Cyril Mougel
• ...
Listes de diffusion :
• RailsFrance, groupe Google (http://groups.google.com/)
• RubyFR-public, groupe Google
Groupe de discussion :
• fr.comp.lang.ruby
IRC :
• #rubyonrails.fr et #rubyfr sur le réseau Freenode
RMLL 2008 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT
Ressources en Français
Livres :
• Ruby on Rails, 2ème édition, Dave Thomas & David Heinemeier Hansson (Eyrolles)
• Ruby et Rails, David A. Black (CampusPress)
• Pratique de Ruby on Rails, Eric Sarrion (O’Reilly)
• Recettes Rails, Chad Fowler (CampusPress)
• Ruby par l’exemple, Lucas Carlson & Leonard Richardson (O’Reilly)
• Débuter en programmation avec Ruby, Chris Pine (CampusPress)
Des questions ?
Merci !
• Pas de modification
• Vous n'avez pas le droit de modifier, de transformer ou d'adapter cette création.
• vous êtes autorisés à réutiliser le logo Ruby France employé dans cette présentation, pour
faire référence à l’association