Presentation_ror_iup_2008

  • Uploaded by: Thibault Normand
  • 0
  • 0
  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Presentation_ror_iup_2008 as PDF for free.

More details

  • Words: 5,663
  • Pages: 81
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. 15œde 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

More Documents from "Thibault Normand"