Ruby On Rails - dr/XPOSE2010/Xpose_NUNES...  D©finition Ruby On Rails Framework web ©crit en Ruby

  • View
    214

  • Download
    0

Embed Size (px)

Text of Ruby On Rails - dr/XPOSE2010/Xpose_NUNES...  D©finition Ruby On Rails Framework web...

  • Ruby On Rails Nelson NUNES IR3

    Nelson NUNES/INGENIEURS2000/IR3 Mardi 7 Dcembre

  • I. Ruby On Rails A. Dfinition B. Ruby C. La philosophie D. Architecture MVC E. Les origines de ROR

    II. Dans le cur de ROR A. Le MVC dans ROR B. Structure dun projet C. Les modles D. Les contrleurs E. Les vues

    III. Outils ROR A. Les gnrateurs B. Les migrations C. Les chafaudages D. Les tests

    IV. Dmonstration

    2

    Nelson NUNES/INGENIEURS2000/IR3

  • Ruby On Rails Nelson NUNES IR3

    I. Ruby On rails

  • Dfinition Ruby On Rails

    Framework web crit en Ruby en 2005

    David Heinemeier Hansson@37signals

    Architecture MVC

    Impose sa structure et sa logique

    4

    Nelson NUNES/INGENIEURS2000/IR3

    Ruby On Rails

  • Ruby Yukihiro Matz - 1995

    Interprt

    Objet

    Non typ

    Reprend les bonnes ides du JAVA (GC, rflexion, Accessibilit)

    Se distingue pas sa facilit dimplmentation

    5

    Nelson NUNES/INGENIEURS2000/IR3

    Ruby On Rails

  • La philosophie DRY : Dont Repeat Yourself

    Convention over configuration

    REST : Representational State Transfer

    CRUD

    6

    Nelson NUNES/INGENIEURS2000/IR3

    Ruby On Rails

  • La philosophie / DRY Chaque chose sa place Dossier Tests contient tous les tests

    Ne pas se rpter Si un code doit tre rutilis, ne vaut-il pas mieux

    implmenter une mthode dans un helper ?

    Crer des Template daffichages Pourquoi ne pas stocker une prsentation dans un

    fichier, afin de la rutiliser ?

    7

    Nelson NUNES/INGENIEURS2000/IR3

    Ruby On Rails

  • La philosophie / Convention over configuration Inutile de prciser des dtails lorsqu'ils respectent

    des conventions tablies

    Meilleures lisibilit

    Rapidit de dveloppement

    Des exemples tout au long de la prsentation

    8

    Nelson NUNES/INGENIEURS2000/IR3

    Ruby On Rails

  • La philosophie / REST Etre RESTful, cest organiser son application

    autours des ressources et des verbes HTTP.

    Les ressources sont les diffrents objets de votre application

    Les verbes HTTP : GET, PUT, DELETE et POST

    DELETE /photos/17

    GET /photos

    POST /photos

    9

    Nelson NUNES/INGENIEURS2000/IR3

    Ruby On Rails

  • La philosophie / CRUD Un objet a quatre oprations lmentaires

    Les objets ont besoin dtre : Cres (Create) Affichs (Read) Modifis (Update) Supprims (Delete)

    10

    Nelson NUNES/INGENIEURS2000/IR3

    Ruby On Rails

  • Architecture MVC Larchitecture MVC (modle, vue et contrleur)

    est un concept trs puissant qui intervient dans la ralisation dune application

    Sparation des donnes (modle), de laffichage (vue) et des actions (contrleur)

    +Un gain de temps de maintenance et dvolution du site

    + Souplesse dans la rpartition des taches

    - Cration de nombreux fichiers

    11

    Nelson NUNES/INGENIEURS2000/IR3

    Ruby On Rails

  • Les origines de ROR 12

    Nelson NUNES/INGENIEURS2000/IR3

    Ruby On Rails

    PHP Peu structur, dur maintenir,

    pas de sparation entre le contenu logique et le rendu

    J2EE Complexe, difficile

    adapter Rails concilie souplesse de dveloppement et lattention porte a larchitecture des applications

  • Ruby On Rails Nelson NUNES IR3

    II. Dans le coeur de ROR

  • Le MVC dans ROR 14

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

    Base de donnes

    MODELE

    CONTROLEUR

    VUE

    Navigateur

  • Structure dun projet RAILS 15

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

  • Les modles 1 modle 1 table en base de donnes

    Gestion des donnes

    Contient les relations entre les modles (et les tables)

    Assure le lien entre le monde objet de Ruby et le monde de relationnel de la base de donnes

    16

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

  • Les modles/ Exemple 17

    id titre auteur isbn

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

    Livres

    CREATE TABLE livres ( id int(11) NOT NULL auto_increment, titre varchar2(240), auteur varchar2(240), isbn varchar2(240), Primary key(id));

    SQL

    Class Livre

  • Les modles / Exemple2 Possibilit de valider la cration dun objet Validate_presence_of :titre validates_length_of :titre, :minimum => 2

    Ajout de trigger Before_create After_create Before_destroy

    18

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

    Livre = Livre.new livre.titre = Harry Potter livre.auteur = JK ROWLING livre.isbn = 25874532XX Livre.save

    Insert into livresvalues(Harry Potter, JK ROWLING, 25874532XX)

    Livre = Livre.find(1) Select * from livres where id = 1

    Livre.destroy Delete from livres where id = 1

  • Les associations Rend plus simple la gestions des relation entre objets

    Plusieurs types : 11 1N 0N Etc.

    19

    Livres id Auteur_id titre

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

    Auteurs id Nom Prenom

    classLivre

  • Les contrleurs En relation directe avec les URL

    Contient les actions possibles pour un objet

    Responsable du traitement des requtes

    20

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

  • Les contrleurs/ exemple 21

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

    Navigateur : http://www.ig2k.com/livres/exemple

    Serveur web Analyse de

    lURL

    Class LivreController

  • Les contrleurs/ Exemple 2 http://www.ig2k.com/livres/

    http://www.ig2k.com/livres/12

    22

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

    Class LivreController

  • Les vues IHM de lapplication

    Gabarit

    Layout != View

    Hrite des variables du contrleur

    23

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

  • Les vues/ Exemple1 http://www.ig2k.com/livres/

    Contrleur : Livre

    Action : index

    24

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

    Bienvenue, dans la vue de lactionindexdans le controlleurLivre

    App/views/livre/index.rhtml

  • Les vues/ Exemple2 http://www.ig2k.com/livres/

    Contrleur : Livre

    Action : index

    25

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

    Bienvenue, dans la vue de lactionindexdans le controlleurLivre

    "livre_mock", :collection =>@livres %>

    App/views/livre/index.rhtml

    App/views/livre/_livre_mock.rhtml

  • Les vues/ Exemple3 26

    Nelson NUNES/INGENIEURS2000/IR3

    Dans le coeur de ROR

    App/views/livre/new.rhtml

    Navigateur : http://www.ig2k.com/livres/new [POST]

    Navigateur : http://www.ig2k.com/livres [POST]

    Redirection vers : http://www.ig2k.com/livre/125

  • Ruby On Rails Nelson NUNES IR3

    III. Outils ROR

  • Les gnrateurs Rails g model Livre auteur:string description:text

    Rails g controller Livre afficher editer vendre

    Et bien dautres

    28

    Nelson NUNES/INGENIEURS2000/IR3

    Outils ROR

  • Les migrations Modifier la structure de la base de donne

    Sous forme de fichiers

    Historique de la Base de donne

    Trs utile lors du dploiement

    29

    Nelson NUNES/INGENIEURS2000/IR3

    Outils ROR

    class CreateLivres < ActiveRecord::Migration def self.up create_table :livres do |t| t.string :auteur t.text :description t.timestamps end end def self.down drop_table :livres end end

    class CreateLivres < ActiveRecord::Migration def self.up add_column :products,:nb_pages, :integer end

    def self.down remove_column :livres, :nb_pages end end

  • Les chafaudages Gnration complte dune application

    Rails g scaffold Livre auteur:string titre:string Gnre le fichier de migration Gnre le modle Gnre le contrleur avec les actions CRUD (Create,

    Read, Update et Delete)

    Gnre les vues Gnre les fichiers de tests

    Sceptique ?

    30

    Nelson NUNES/INGENIEURS2000/IR3

    Outils ROR

  • Les tests Des fichiers de tests ont dj t gnrs

    Les tests ne sont pas faciles crire

    On peux simuler un navigateur

    + plugins

    31

    Nelson NUNES/INGENIEURS2000/IR3

    Outils ROR

  • Ruby On Rails Nelson NUNES IR3

    III. Dmonstration