Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Ruby on Rails “Mon pr´ eciiiiieux” Gollum
Thibault Normand IUP ISI - Master 1
23/09/2008
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Sommaire
1
Ruby
2
Rails
3
Application
4
Mod` ele d’ex´ ecution
5
Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Disclaimer Bonjour ` a tous
Thibault NORMAND <
[email protected] > Ing´ enieur consultant en s´ ecurit´ e des syst` emes d’informations, Scassi Conseil. Travaux avec Rails depuis plus d’un an dans le cadre d’applications bancaires et li´ ees ` a l’analyse de s´ ecurit´ e. But de la pr´ esentation Pr´ esenter Ruby et Ruby on Rails. Pas forc´ ement devenir expert programmeur de l’extrˆ eme RoR. Surtout pr´ esenter les concepts n´ ecessaires ` a la prise en main.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
La jeunesse
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
La jeunesse
Ruby La jeunesse
Ruby est un langage orient´ e objet. ´ Ecrit par Yukihiro Matsumoto en 1995. Sous influence pythonesque, perlienne et lispoise.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
La jeunesse
Ruby La jeunesse
Ruby est un langage orient´ e objet. ´ Ecrit par Yukihiro Matsumoto en 1995. Sous influence pythonesque, perlienne et lispoise. Facile ` a prendre en main et ` a mettre en œuvre. Syntaxe simpliste.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
La jeunesse
Ruby La jeunesse
Ruby est un langage orient´ e objet. ´ Ecrit par Yukihiro Matsumoto en 1995. Sous influence pythonesque, perlienne et lispoise. Facile ` a prendre en main et ` a mettre en œuvre. Syntaxe simpliste. Des fonctionnalit´ es de programmation dynamique, et de “m´ etaprogrammation”.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
La jeunesse
Ruby La jeunesse
Ruby est un langage orient´ e objet. ´ Ecrit par Yukihiro Matsumoto en 1995. Sous influence pythonesque, perlienne et lispoise. Facile ` a prendre en main et ` a mettre en œuvre. Syntaxe simpliste. Des fonctionnalit´ es de programmation dynamique, et de “m´ etaprogrammation”. Un gestionnaire paquet performant RubyGems.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
L’originalit´ e
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
L’originalit´ e
Ruby Toute une philosophie.
Tout objet. (Plus proche de la philosophie objet que Python) Capacit´ e d’extension. (Java, C, C++, . . . )
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
L’originalit´ e
Ruby Toute une philosophie.
Tout objet. (Plus proche de la philosophie objet que Python) Capacit´ e d’extension. (Java, C, C++, . . . ) Exemples 1
5.times { print “Hello !” }
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
L’originalit´ e
Ruby Toute une philosophie.
Tout objet. (Plus proche de la philosophie objet que Python) Capacit´ e d’extension. (Java, C, C++, . . . ) Exemples 1
5.times { print “Hello !” }
2
exit unless ”Hello World”.include ? ”ello”
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
L’originalit´ e
Ruby Toute une philosophie.
Tout objet. (Plus proche de la philosophie objet que Python) Capacit´ e d’extension. (Java, C, C++, . . . ) Exemples 1
5.times { print “Hello !” }
2
exit unless ”Hello World”.include ? ”ello”
3
a = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] a.sort !
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
L’originalit´ e
Ruby Toute une philosophie.
Tout objet. (Plus proche de la philosophie objet que Python) Capacit´ e d’extension. (Java, C, C++, . . . ) Exemples 1
5.times { print “Hello !” }
2
exit unless ”Hello World”.include ? ”ello”
3
a = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] a.sort !
4
class Livre attr reader :titre, :auteur end monLivre = Livre.new(”Risky”, :auteur =>”Thibault NORMAND”)
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
La puissance
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
La puissance
Ruby La portabilit´ e
Ruby est une sp´ ecification de langage ouverte. Langage facilement embarquable. (PL/Ruby) De nombreux interpr´ eteurs ´ existent : JRuby (J2EE), IronRuby (.Net), . . . Portabilit´ e apr` es satisfaction des d´ ependances.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
La puissance
Ruby La m´ eta programmation
La m´ eta programmation : code qui d´ ecrit du code = code dynamique. Possibilit´ e de modifier des classes et des m´ ethodes pendant l’ex´ ecution du programme : inspir´ e par SmallTalk. Mixin & Module. Exemple Source animals.rb
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Le catalyseur
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Le catalyseur
Rails Pas le premier mais c’est tout comme . . .
Framework de d´ eveloppement Web 2.0 complet. Enti` erement ´ ecrit en Ruby par des d´ eveloppeurs pour des d´ eveloppeurs. D´ evelopp´ e` a l’origine par David Heinemeier Hansson (DHH) et publi´ e pour la premi` ere fois en 2004. OpenSource & Free. 15de l’open-source aux USA. (eBay, Amazon, Nouvel Obs, Le Figaro, Twitter) Code less, create more ;-) Ax´ e sur la productivit´ e des d´ eveloppeurs qui l’utilisent. Initier - G´ en´ erer - Ex´ ecuter # rails discoman Initialise l’architecture de l’application RoR. Le serveur d’application est prˆ et ` aˆ etre ex´ ecuter. # script/server Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
M´ ethodologie ”Agile”
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
M´ ethodologie ”Agile”
Rails Vole comme un papillon, pique comme une abeille.
Agile Manifesto Personnes et interactions plutˆ ot que processus et outils Logiciel fonctionnel plutˆ ot que documentation compl` ete Collaboration avec le client plutˆ ot que n´ egociation de contrat R´ eagir au changement plutˆ ot que suivre un plan
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
M´ ethodologie ”Agile”
Rails Vole comme un papillon, pique comme une abeille.
Agile Manifesto Personnes et interactions plutˆ ot que processus et outils Logiciel fonctionnel plutˆ ot que documentation compl` ete Collaboration avec le client plutˆ ot que n´ egociation de contrat R´ eagir au changement plutˆ ot que suivre un plan Ruby on rails agile Conventions plutˆ ot que configurations. Serveur Web int´ egr´ e. Un seul langage. G´ en´ erateurs. Scaffolding. DRY Don’t Repeat Yourself. Test (TU, RSpec). Rdoc. Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Architecture du framework
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Architecture du framework
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Architecture du framework
Rails Lego rails
ActiveRecord Gestion des objets en base de donn´ ees. (Relations, cardinalit´ es, validations)
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Architecture du framework
Rails Lego rails
ActiveRecord Gestion des objets en base de donn´ ees. (Relations, cardinalit´ es, validations) ActionController Aiguilleur des requˆ etes clients. (Filtres, Communication externe, Session, . . . )
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Architecture du framework
Rails Lego rails
ActiveRecord Gestion des objets en base de donn´ ees. (Relations, cardinalit´ es, validations) ActionController Aiguilleur des requˆ etes clients. (Filtres, Communication externe, Session, . . . ) ActionView Afficheur des donn´ ees trait´ ees par le contrˆ oleur. (Template, Helper, Scaffolding, Pages partielles, Mise en page, AJAX / RJS)
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Architecture du framework
Rails Lego rails
ActiveRecord Gestion des objets en base de donn´ ees. (Relations, cardinalit´ es, validations) ActionController Aiguilleur des requˆ etes clients. (Filtres, Communication externe, Session, . . . ) ActionView Afficheur des donn´ ees trait´ ees par le contrˆ oleur. (Template, Helper, Scaffolding, Pages partielles, Mise en page, AJAX / RJS) ActionMailer Gestion des communications par emails.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Architecture du framework
Rails Lego rails
ActiveRecord Gestion des objets en base de donn´ ees. (Relations, cardinalit´ es, validations) ActionController Aiguilleur des requˆ etes clients. (Filtres, Communication externe, Session, . . . ) ActionView Afficheur des donn´ ees trait´ ees par le contrˆ oleur. (Template, Helper, Scaffolding, Pages partielles, Mise en page, AJAX / RJS) ActionMailer Gestion des communications par emails. Et bien d’autres Extensible par plugins.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Rails MVC : Ma Vieille Chaussette ?
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Rails MVC : Ma Vieille Chaussette ?
Mod` ele Gestion des donn´ ees. ActiveRecord. G` ere les relations entre tables.
Beaucoup de choses sont g´ en´ er´ ees ` a partir des sp´ ecifications. Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Rails MVC : Ma Vieille Chaussette ?
Mod` ele Gestion des donn´ ees. ActiveRecord. G` ere les relations entre tables. Vue D´ etermine comment les informations sont affich´ ees. Combinaison de Ruby et de HTML. Peut varier en fonction des requˆ etes (Javascript, iPhone, Mobile, etc . . . ).
Beaucoup de choses sont g´ en´ er´ ees ` a partir des sp´ ecifications. Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Rails MVC : Ma Vieille Chaussette ?
Mod` ele Gestion des donn´ ees. ActiveRecord. G` ere les relations entre tables. Vue D´ etermine comment les informations sont affich´ ees. Combinaison de Ruby et de HTML. Peut varier en fonction des requˆ etes (Javascript, iPhone, Mobile, etc . . . ). Contrˆ oleur R´ eagit aux requˆ etes utilisateur. R´ epond ` a l’aide d’une vue. H´ eberge les op´ erations ` a effectuer ` a partir des donn´ ees du mod` ele. Beaucoup de choses sont g´ en´ er´ ees ` a partir des sp´ ecifications. Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Rails Generators, merci ` a vous !
Une personne est qualifi´ ee par : Un nom, de type chaˆıne de caract` eres (string en ruby). Un pr´ enom, de type chaˆıne de caract` eres. Date de naissance, de type date.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Rails Generators, merci ` a vous !
Une personne est qualifi´ ee par : Un nom, de type chaˆıne de caract` eres (string en ruby). Un pr´ enom, de type chaˆıne de caract` eres. Date de naissance, de type date. Generator # script/generate [type] [name] [name :type]* migration : op´ eration sur base de donn´ ees. model : g´ en` ere un objet et sa repr´ esentation en base (migration). controller : g´ en` ere un contrˆ oleur associ´ e` a un mod` ele sp´ ecifi´ e. scaffold : g´ en` ere une vue automatique, un mod` ele, sa migration (BD), et le contrˆ oleur associ´ e.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Rails Generators, merci ` a vous !
Classe Person # script/generate scaffold Person firstname :string lastname :string bithday :date
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Rails Generators, merci ` a vous !
Classe Person # script/generate scaffold Person firstname :string lastname :string bithday :date G´ en´ eration 1
Migration (Script BD) (db/migrate)
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Rails Generators, merci ` a vous !
Classe Person # script/generate scaffold Person firstname :string lastname :string bithday :date G´ en´ eration 1
Migration (Script BD) (db/migrate)
2
Modˆ ele (Interface ` a la BD, et gestion des associations entre modˆ ele(s).) (app/models)
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Rails Generators, merci ` a vous !
Classe Person # script/generate scaffold Person firstname :string lastname :string bithday :date G´ en´ eration 1
Migration (Script BD) (db/migrate)
2
Modˆ ele (Interface ` a la BD, et gestion des associations entre modˆ ele(s).) (app/models)
3
Controleur (Interface entre le mod` ele et la vue.) (app/controllers)
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Rails Generators, merci ` a vous !
Classe Person # script/generate scaffold Person firstname :string lastname :string bithday :date G´ en´ eration 1
Migration (Script BD) (db/migrate)
2
Modˆ ele (Interface ` a la BD, et gestion des associations entre modˆ ele(s).) (app/models)
3
Controleur (Interface entre le mod` ele et la vue.) (app/controllers)
4
Vue (Scaffold) (Interface Homme Machine) (app/views)
Premier lancement # script/server
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conception MVC
Un caf´e ?
Thibault Normand
[email protected]
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Rails Gestion d’une discographie
Domaine Artist : un artiste d’œuvre. Producer : un producteur d’artiste. Song : une œuvre musicale d’un artiste. Track : la publication d’une œuvre sur un support CD. Album : l’ensemble des publications.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Rails Gestion d’une discographie
Producteur # script/generate model producer firstname :string lastname :string dob :date dod :date Artiste # script/generate model artist firstname :string lastname :string dob :date dod :date producer :references Oeuvre # script/generate model song name :string version :integer duration :float dop :date artist :references
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Rails Gestion d’une discographie
Piste # script/generate model track number :integer song :references album :references Album # script/generate model album name :string year :integer
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Rails Gestion d’une discographie
Piste # script/generate model track number :integer song :references album :references Album # script/generate model album name :string year :integer Cr´ eation de la base de donn´ ees # rake db :migrate
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Rails Gestion d’une discographie
Piste # script/generate model track number :integer song :references album :references Album # script/generate model album name :string year :integer Cr´ eation de la base de donn´ ees # rake db :migrate Nous venons de g´ en´ erer les mod` eles, ils ont ´ et´ e construit ` a partir des sp´ ecifications donn´ ees pr´ ec´ edentes. Passons aux relations . . .
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Relations inter-mod`eles Gestion d’une discographie
Domaine Artist : a compos´ e plusieurs chansons (Songs). # has many :songs # belongs to :producer Producer : produit plusieurs artistes. # has many :artists Song : appartient ` a un artiste. # belongs to :artist Track : est le support d’une chanson. # belongs to :song # belongs to :album Album : contient plusieurs pistes (Track). # has many :tracks
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Relations inter-mod`eles Petites v´ erifications
script/console # script/console (charge l’environnement interactif de rails pour le d´ eboguage) Nous allons cr´ eer plusieurs objets ` a la mano : # # # # #
Thibault Normand Ruby on Rails
p = Producer.new("Bob","Sponge") p.save! (pour la sauvegarde en base) a = Artist.new("Barry","White",p) a.save! a.producer == p (?)
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Contraintes & Validations V´ erifier les donn´ ees avant utilisation.
V´ erifier la coh´ erence des donn´ ees avant enregistrement. Appliquer des traitements conditionnels aux entr´ ees. Validator validates presence of : v´ erifier que le champs n’est pas vide. validates length of : valide la longueur du champs. et´ e d’unicit´ e d’un champs par rapport ` a une validates uniqueness of : valide une propri´ ´ etendu.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Contraintes & Validations V´ erifier les donn´ ees avant utilisation.
V´ erifier la coh´ erence des donn´ ees avant enregistrement. Appliquer des traitements conditionnels aux entr´ ees. Validator validates presence of : v´ erifier que le champs n’est pas vide. validates length of : valide la longueur du champs. et´ e d’unicit´ e d’un champs par rapport ` a une validates uniqueness of : valide une propri´ ´ etendu. Restriction sur le mod` ele. Artist : doit avoir un nom ET un pr´ enom. # validates presence of :firstname # validates presence of :lastname Track : le num´ ero de piste doit ˆ etre unique pour un album. # validates uniqueness of :number, :scope =>album id
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Contraintes & Validations V´ erification
Artiste sans nom # a2 = Artist.new( :firstname =>”Alan”) a2.save ! # ActiveRecord : :RecordInvalid : Validation failed : Lastname can’t be blank Num´ ero Piste identique # t2 = Track.new( :number =>1, :song id =>1, :album id =>1) t2.save ! # ActiveRecord : :RecordInvalid : Validation failed : Number has already been taken
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mod` ele
Fin du mod`ele Ouf 2/3 du boulot achev´ e.
Conclusion Les mod` eles sont g´ en´ er´ es. Les relations et les contrˆ oles d’int´ egrit´ e des donn´ ees par rapport au mod` ele sont ` a saisir. Les mod` eles sont issus de la base de donn´ ees. (Migration incr´ ementale) Ce dont je n’ai pas parl´ e H´ eritage de table (STI, MTI). Relation polymorphique.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Vues
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Vues
G´en´eration des vues Scaffold the building before painting it !
Scaffold Static Scaffold : “Scaffold” g´ en´ er´ e par ”generators”. Dynamic Scaffold : “Scaffold” g´ en´ er´ e` a la requˆ ete utilisateur. Scaffold static G´ en´ erateur de base.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Vues
G´en´eration des vues Scaffold the building before painting it !
Scaffold Static Scaffold : “Scaffold” g´ en´ er´ e par ”generators”. Dynamic Scaffold : “Scaffold” g´ en´ er´ e` a la requˆ ete utilisateur. Scaffold static G´ en´ erateur de base. Interface tr` es sommaire (il ne peut pas faire le design pour vous non plus !)
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Vues
G´en´eration des vues Scaffold the building before painting it !
Scaffold Static Scaffold : “Scaffold” g´ en´ er´ e par ”generators”. Dynamic Scaffold : “Scaffold” g´ en´ er´ e` a la requˆ ete utilisateur. Scaffold static G´ en´ erateur de base. Interface tr` es sommaire (il ne peut pas faire le design pour vous non plus !) A partir d’un mod` ele : # script/generate scaffold artist firstname :string lastname :string dob :date -skip-migration
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Vues
G´en´eration des vues Dynamic Scaffolding
Avantages Gagner (encore) du temps sur la r´ ealisation du produit. Prototypage tr` es rapide. Utilisation pour les parties d’administrations.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Vues
G´en´eration des vues Dynamic Scaffolding
Avantages Gagner (encore) du temps sur la r´ ealisation du produit. Prototypage tr` es rapide. Utilisation pour les parties d’administrations. Inconv´ enients Peut faire perdre du temps, pour la prise en main. Modifications difficiles dans certains cas de personnalisation d’affichage.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Vues
G´en´eration des vues Dynamic Scaffolding
Avantages Gagner (encore) du temps sur la r´ ealisation du produit. Prototypage tr` es rapide. Utilisation pour les parties d’administrations. Inconv´ enients Peut faire perdre du temps, pour la prise en main. Modifications difficiles dans certains cas de personnalisation d’affichage. Dynamic Scaffold ActiveScaffold http://www.activescaffold.com/ G´ en´ eration de vues AJAX (CRUD), XML, JSON, . . . StreamLined http://www.streamlinedframework.org/ G´ en´ eration de formulaires dynamiques en fonction du mod` ele et de m´ eta donn´ ees. Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Vues
Dynamic Scaffold ActiveScaffold mon pr´ ef´ er´ e h´ e!
Principe Aucune vue Tout est g´ er´ e` a partir du contrˆ oleur. Vues HTML (.html), XML(.xml), JSON(.js/.json) par d´ efaut. RESTful WebServices. (PUT, GET, DELETE, POST) Contrˆ oleur # active scaffold :artist (o` u artist est le nom du mod` ele associ´ e au contrˆ oleur). Exemple # active_scaffold :artist do |config| # config.columns = [:lastname,:firstname] # end
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Contrˆ oleurs
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Contrˆ oleurs
Contrˆoleurs Pont de communication entre vues et donn´ ees.
Principe H´ eberge les fonctions mises ` a disposition de l’utilisateur. Interface entre les donn´ ees (mod` eles) et les vues. Question Comment faire correspondre un contrˆ oleur ` a une requˆ ete utilisateur ?
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Contrˆ oleurs
Contrˆoleurs Pont de communication entre vues et donn´ ees.
Principe H´ eberge les fonctions mises ` a disposition de l’utilisateur. Interface entre les donn´ ees (mod` eles) et les vues. Question Comment faire correspondre un contrˆ oleur ` a une requˆ ete utilisateur ? R´ eponse En utilisant le concept de route. route par d´ efaut : :controller/ :action/ :id. :format.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Ex´ecution de l’application 5.. 4.. 3.. 2.. 1.. 0.. Ignition !
3 modes d’ex´ ecutions Developement Mode de d´ eveloppement, d´ eboguage maximum, performance minimum. Test Environnement utilis´ e lors de l’ex´ ecution des tests (TU, BDD, RSpec, ...) Production Mode d’ex´ ecution en production sur un serveur d´ edi´ e. Voir le d´ eploiement automatis´ e via Capistrano.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Ex´ecution de l’application 5.. 4.. 3.. 2.. 1.. 0.. Ignition !
3 modes d’ex´ ecutions Developement Mode de d´ eveloppement, d´ eboguage maximum, performance minimum. Test Environnement utilis´ e lors de l’ex´ ecution des tests (TU, BDD, RSpec, ...) Production Mode d’ex´ ecution en production sur un serveur d´ edi´ e. Voir le d´ eploiement automatis´ e via Capistrano. Lancement # RAILS ENV=production rake db :migrate # RAILS ENV=production script/server
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mode CGI
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mode CGI
CGI Instanciation de l’interpr´ eteur ` a chaque requˆ ete.
Principe Chaque requˆ ete de l’utilisateur d´ emarre un interpr´ eteur Ruby avec l’environnement Rails. D´ etruit l’interpr´ eteur ` a la fin de l’ex´ ecution de la requˆ ete.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mode CGI
CGI Instanciation de l’interpr´ eteur ` a chaque requˆ ete.
Principe Chaque requˆ ete de l’utilisateur d´ emarre un interpr´ eteur Ruby avec l’environnement Rails. D´ etruit l’interpr´ eteur ` a la fin de l’ex´ ecution de la requˆ ete. Avantage Aucun, alors pourquoi c’est possible ? Inconv´ enients Temps de chargement avant traitement de la requˆ ete (10-30s) Consomme ´ enorm´ ement de RAM.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mode Cluster
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mode Cluster
Cluster Se diviser pour mieux r´ egner.
Principe D´ emarrer N instances en mode production de l’application Rails. Utiliser un reverse proxy, afin de diriger la requˆ ete utilisateur sur un serveur disponible. (Load balancing)
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Mode Cluster
Cluster Se diviser pour mieux r´ egner.
Principe D´ emarrer N instances en mode production de l’application Rails. Utiliser un reverse proxy, afin de diriger la requˆ ete utilisateur sur un serveur disponible. (Load balancing) Avantages Simplifie l’architecture du syst` eme. Permet les contrˆ oles de s´ ecurit´ e avant acc` es ` a l’application. Mise en cache. Inconv´ enients Connaissances en administration des syst` emes. Plus difficile ` a mettre en place (Connaissance des configurations des reverse-proxies.)
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Guide 1
2
3
Ruby La jeunesse L’originalit´ e La puissance Rails Le catalyseur M´ ethodologie ”Agile” Architecture du framework Conception MVC Application Mod` ele Domaine Relations Contraintes && Validations
Vues Dynamic Scaffolding Exemple : ActiveScaffold
4
5
Contrˆ oleurs Mod` ele d’ex´ ecution Mode CGI Mode Cluster Conclusion
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conclusion Parce que tout ` a une fin.
Aie ! Langage ` a la syntaxe clair mais ` a la philosophie qui peut faire peur quelques fois. On doit acqu´ erir des r´ eflexes : penser que cela existe d´ ej` a ... Peut devenir un v´ eritable casse tˆ ete . . . Des soucis de performances ` a cause du mod` ele d’exploitation et surtout de l’interpr´ eteur actuel. (cf Twitter) Mouais ! Certaines choses sont ` a revoir : liaison Mod` ele - BD Conventions un peu lourde.
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Conclusion Parce que tout ` a une fin.
Youpi ! Productivit´ e hors comp´ etition. S´ eparation MVC aide beaucoup le d´ eveloppeur. Myriade de plugins et extensions. Des IDE performants gratuit : Aptana (Eclipse) Vecteur de propagation de nouvelles technologies (RESTful WS, JSON, . . .) Trouver mieux ailleurs ? CakePHP http://www.cakephp.org/ CodeIgnitor (PHP) http://codeigniter.com/ Grails (Java / Groovy) http://grails.org/ Django (Python) http://www.djangoproject.com/ Merb (Ruby) http://www.merbivore.com/
Thibault Normand Ruby on Rails
IUP ISI - Master 1
Ruby
Rails
Application
Mod` ele d’ex´ ecution
Conclusion
Questions ?
Thibault Normand
[email protected]
Thibault Normand Ruby on Rails
IUP ISI - Master 1