Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TechDays RubyOnRails

TechDays RubyOnRails

Voici les différents parties de la présentation :
- Introduction
- Avantages du framework
- Description des différents couches : ActiveRecord, ActionController et ActionView
- Gestion des tests unitaires
- Ressources et liens
- Démonstration

Julien Landuré

October 25, 2007
Tweet

More Decks by Julien Landuré

Other Decks in Programming

Transcript

  1. 2 Sommaire ƒ Introduction ƒ Présentation du framework ƒ Technique

    ƒ ActiveRecord ƒ ActionController ƒ ActionView ƒ Tests ƒ Conclusion ƒ Ressources et liens ƒ Démonstration
  2. 3 Introduction ƒ Retour en force de la plateforme web

    : ajax, web 2.0 ƒ Avènements de nouveaux outils et de frameworks web ƒ But commun ƒ rendre les développeurs opérationnels ƒ ne pas redévelopper sans cesse les fonctionnalités similaires ƒ imposer des normes de codage et des bonnes pratiques
  3. 4 Présentation du framework ƒ Créé par 37signals & David

    Heinemeier Hansson (aka DHH) ƒ Framework extrait de l’application “Basecamp” ƒ Version 1.0 sorti en décembre 2005, version 1.2 sortie le 14 mars 2007… version 2.0 en cours de développement
  4. 5 Présentation du framework ƒ Framework web ƒ Socle technique

    pour l’interaction de pages ƒ Design Pattern: MVC (Model View Controller), ORM (Object Relational Mapping) ƒ "Don't Repeat Yourself" (DRY) ƒ Ensemble de composants: Active Record, Action Pack, Action Mailer, Action Web Service, Prototype/Scriptaculous ƒ Populaire ƒ 1,300,000 téléchargements ƒ Nombreuses manifestations : ParisOnRails etc.
  5. 6 Présentation du framework ƒ Basé sur le langage Ruby

    ƒ langage de script (interprété) ƒ multiplateforme ƒ orienté objet ƒ dynamique ƒ Exemple de codes ƒ 5.times { print "Odelay!" } ƒ exit unless "restaurant".include? "aura" ƒ ['toast', 'cheese', 'wine'].each { |food| print food.capitalize }
  6. 7 Technique ƒ Convention plutôt que Configuration ƒ Adoption de

    règles d’usage implicites ƒ Ne configurer que les cas particuliers ƒ Gain de productivité pour le développeur ! ƒ Intégration des tests unitaires et fonctionnels ƒ Intégration d’AJAX (prototype & script.aculo.us)
  7. 9 Technique La couche ORM ƒ Mappage Objet-Relationnel ƒ Gestion

    des relations entre les tables ƒ Plus de SQL à écrire dans la grande majorité des cas ƒ Fonctionne avec de nombreux SGBD ƒ (MySQL, PostgreSQL, Oracle, ...) ƒ Support des relations, des callbacks (before_save etc.) ƒ Classiquement : ƒ Les tables de la base de données correspondent aux classes Ruby ƒ Les enregistrements aux objets ƒ Les colonnes aux attributs (propriétés) des objets
  8. 10 Technique La couche ORM ƒ Exemple de conventions ƒ

    id comme nom de clef primaire ƒ Nom des tables au pluriel et en minuscules, tiret bas entre les mots ƒ Nom des classes au singulier et en casse mixte ƒ Les fichiers de modèle au singulier, en minuscules, tiret bas entre les mots, stockés dans app/models ƒ Exemple ƒ Nom de la table : commande_clients ƒ Fichier modèle : app/models/commande_client.rb ƒ Classe Ruby : CommandeClient
  9. 11 Technique La couche ORM ƒ Ceci est une classe

    de modèle “conventionnelle” class CommandeClient < ActiveRecord::Base end ƒ Et elle permet de : ƒ créer ƒ supprimer ƒ éditer ƒ rechercher (paginer) commandes = CommandeClient.find :all, :offset => 10, :limit => 5 ƒ Finders dynamiques CommandeClient.find_by_prix_and_numero(100, 'CC-01')
  10. 12 Technique La couche ORM ƒ Les validateurs ƒ Liés

    au modèle : ƒ incontournables ! ƒ Garants de l’intégrité des données validates_presence_of :nom, :prenom validates_size_of :nom, :prenom, :within => 3..15 validates_uniqueness_of :nom validates_numericality_of :age validates_format_of :ville, :with => /^\w+$/i, :message => "can only contain letters and numbers" validates_inclusion_of :commentaire, :in => %w(1 2 3) ƒ Affichage des erreurs en une ligne dans la vue <%= error_messages_for :lecteur %>
  11. 13 Technique La couche ORM ƒ Et bien plus… ƒ

    Isolation des environnements ƒ Développement ƒ Test ƒ Production ƒ Fichier de migrations : définition portable, indépendante du SGBDR ƒ Schéma en Ruby : db/schema.rb ƒ Gestion d’observateurs ƒ Gestion des transactions
  12. 14 Technique ActionController ƒ Coordonne les interactions entre les vues

    et le modèle ƒ Une méthode publique = une action ƒ Gestion du routage ƒ Gestion des sessions ƒ Gestion de la pagination ƒ Gestion des caches (page, action, fragment) ƒ Pré-filtres, post-filtres et péri-filtres URL: /lecteurs/bienvenue?nom=piacentini class LecteursController < ApplicationController def bienvenue @lecteur = Lecteur.find_by_nom params[:nom] session[:lecteur_id] = @lecteur.id flash[:notice] = “hé, déja #{@lecteur.age} ans !” end end
  13. 15 Technique ActionController ƒ Gestion du routage ƒ http://mon_site/articles/2006/08/31 map.articles

    'articles/:year/:month/:day', :controller => 'articles', :action => 'find_by_date', :year => /\d{4}/, :month => /\d{1,2}/, :day => /\d{1,2}/
  14. 16 Technique ActionView ƒ Différents templates ƒ ERB (.rhtml), ƒ

    XML(.rxml) ƒ RJS(.rjs) ƒ Présence de Layouts (gabarits) : factorisation de la mise en page ƒ Fichiers partiels (Partial): factorisation du rendu HTML ƒ Helpers: Ils vous simplifient la vue
  15. 17 Technique ActionView ƒ Templates ƒ ERB « Embedded Ruby

    » ƒ HTML classique avec du code ruby ƒ Les variables d’instance du contrôleur sont disponibles dans la vue ƒ RXML ƒ Utilise la bibliothèque Builder pour construire des réponses au format XML ƒ RJS ƒ Permet de générer du Javascript...sans écrire une ligne de Javascript ƒ C’était LA grande nouveauté de Rails 1.1 ƒ Combiné à Prototype et Script.aculo.us
  16. 18 Technique ActionView ƒ Helpers ƒ Modules contenant des méthodes

    utilisables par les différentes vues d'un contrôleur
  17. 19 Technique Tests ƒ Rails met à votre disposition 3

    types de tests: ƒ Tests unitaires ƒ Tests fonctionnels ƒ Tests d’intégration ƒ Génération automatique des squelettes ƒ Plus aucune raison de ne pas suivre les bonnes pratiques ;-) ƒ Fixtures : fichier contenant des données pour les tests test/fixtures/articles.yml one: id: 1 title : article 1 two: id: 2 title : article 2
  18. 20 Technique Tests ƒ Tests fonctionnels ƒ valider les méthodes

    d’un contrôleur ƒ Tests d’intégration ƒ simuler une utilisation réelle de l’application ƒ « Selenium On Rails » ƒ Tests sur changements récents rake test:recent ƒ Tests sur changements non committés rake test:uncommitted
  19. 21 Technique RAF ƒ ActionMailer et ActionWebservice ƒ Les plugins

    (des centaines sont disponibles !) ƒ AJAX avec Prototype & Script.aculo.us ƒ Le déploiement avec Capistrano ƒ L’intégration continue avec CIA ƒ Et bien d’autres choses...
  20. 22 Conclusion ƒ Courbe d'apprentissage aisée ƒ Concentration sur le

    code vraiment utile (la valeur ajoutée) ƒ Gain de productivité sur les tâches de base ƒ Réutilisation du code “générique” : DRY
  21. 23 Ressources et liens ƒ http://www.rubyonrails.com/ ƒ http://en.wikipedia.org/wiki/Ruby_on_Rails ƒ http://www.railslodge.com/

    - Plugins ƒ http://www.oreilly.com/catalog/rubyrails/ ƒ https://crite.emn.fr/video/conferences/rubyonrails/ - EMN