speech

essay B

Ruby On Rails 3. 4. 1 . 1 Introduction Ruby on Rails ou « RoR » pour les intimes, est un Framework basé comme son nom l’indique sur le langage Ruby. Il a été développé par David Heinemeier Hansson et publié pour la première fois sur Internet en 2004 sous licence GPL (libre). Depuis sa première version, Rails est passé du petit jouet inconnu à celui de phénomène mondial et a remporté de nombreuses récompenses.

Il est même devenu le Framework de choix pour l’implémentation des applications dite « Web 20″ Contrairement à Java, qui s’appuie sur une foule de fichiers de onfiguration XML, Rails croit lui à la convention plutôt qu’à la Swpe to page configuration. Il rem par des conventions spécifiques. pour do étrangères de chaqu par  » _ id sp or 18 e fichiers XML et de répertoires xige que les clés nnées se termine Un des principes fondamentaux de Rails est également de minimiser la duplication du code. On appelle ce principe DRY – Donit Repeat Yourself – .

Cest d’ailleurs une des raisons du succès mondial de ce Framework car un nombre important de développeurs estiment que des outils tels que JAVA, . NET ou PHP sont trop complexes et demandent sans cesse une réécriture e code similaire. Une autre raison de l’engouement porté à ce Framework tient dans le fait qu’une part importante du temps, lors du développement d’une application, est consacrée aux tests. Rails réussi dans ce domai domaine encore à faire des miracles car il est capable de se créer lui-même, au fur et à mesure du développement, le code nécessaire à la réalisation de la majorité des tests.

Mais comment Rails procède pour simplifier à ce point les choses? IJne bonne partie de la réponse réside dans le fait que Rails a repris le modèle MVC (Modèle Vue Contrôleur) comme architecture e développement, ce qui lui permet de séparer et ranger chaque bout de code à un endroit bien précis. De cette façon, le développement d’une application débute toujours autour d’une ossature déjà en place, un peu comme si vous construisiez un gratte-ciel et que les poutrelles en acier étaient déjà toutes mises en place avant de débuter le chantier. 3. . 1. 2 Le langage Ruby Ruby a été créé au Japon par Yukihiro Matsumoto en 1993 et sa première version a été publiée en 1995. Ruby est un langage de script et impose donc un environnement d’exécution sur le serveur. Sa particularité tient dans le fait qu’il est entièrement orienté objet, ce qui veut dire que pour Ruby tout est considéré comme étant un objet. Lors de la création du langage, Yukihiro Matsumoto a mis en œuvre le principe POLS (Principle of east Surprise), c’est à dire de tout mettre en œuvre pour éviter les mauvaises surprises.

Ainsi, même si Ruby peut paraitre un peu déroutant au début, on est vite surpris par la cohérence et la syntaxe véritablement intuitive de ce langage. Pour realiser Ruby, Yukihiro Matsumoto s’est inspiré du célebre langage SmallTalk pour son aspect orienté obJet, de Python pour a simplic 18 inspiré du célèbre langage Smal[Talk pour son aspect orienté objet, de Python pour sa simplicité et de Perl pour sa flexibilité. Ruby a également plusieurs points communs avec PHP et est particulierement bien adapté au développement Web.

Ruby se détache néanmoins des autres langages grâce à une syntaxe particulièrement simple et concise. « Un code Ruby est encore plus simple à lire et à écrire que du PHP, tant la syntaxe est épurée, notamment grâce aux points virgules facultatifs et à l’absence de caractères spéciaux. C’est presque du langage naturel ! , « Quinze lignes de code PHP peuvent ainsi être condensées en cinq lignes de Ruby » a même affirmé Eric Daspet, un expert du langage Ruby. Exemple de code Ruby 5. times { print « Hello World !  » // Cinq fois affiche « Hello World !  » exit unless « Hello Worldi’. nclude? ‘tello » //stop sauf si »Hello World » contient « ello » Les principales caractéristiques du langage Ruby Une syntaxe très simple (inspiré par Eiffel et Ada), Des variables non typées dont la déclaration est facultative (inspiré de Perl ou Python), Du tout objet (inspiré de SmallTalk), Une gestion interne de la mémoire (comparable au Garbage Collector de Java), Un système de gestion d’exceptions, La possibilité de remplacer des méthodes et de modifier des classes pendant l’exécution du programme (inspiré de SmallTalk), L’utilisation des expressions régulières.

Pour conclure, même si Ruby est un excellent langage et qu’il a réussi à percer de façon très significative dans de nombreux pays, il est encore peu connu en il est encore peu connu en France, du fait d’une communauté PHP particulièrement forte. 3. 4. 1. 3 Le modèle MVC Le modèle MVC (Modèle Vue Contrôleur) a été mis au point en 1979 par Trygve Reenskaug qui travaillait alors dans les aboratoires de recherche de la société Xerox PARC. Ce modèle est une architecture qui impose une séparation entre les données, la présentation et les traitements.

Nous obtenons ainsi trois parties fondamentales distinctes qui sont le Modèle, la Vue et le Contrôleur. Le Modèle représente le comportement de l’application et impose les différentes règles métiers à appliquer aux données. Il assure également l’interaction avec les bases de données et définit les méthodes d’accès aux données manipulées. Pour donner un exemple, si une réduction est appliquée à commandes upérieures à 600 ç, c’est le Modèle qui appliquera cette règle. Le Modèle se charge donc de maintenir l’intégrité des données de l’application.

La Vue est chargée de construire l’interface utilisateur en se basant sur les données envoyées par le Modèle. Ces données sont dénuées de toute présentation, c’est la Vue qui gèrera la façon dont ces données seront affichées à l’écran de l’utilisateur. Il est à noter que plusieurs Vues peuvent afficher les informations provenant d’un même Modèle. Les Vues sont conçues en HTML avec en complément des balises ans lesquelles seront mis les scripts Ruby nécessaires pour la récupération et l’exploitation des données envoyées par le Modèle.

La 8 nécessaires pour la récupération et l’exploitation des données envoyées par le Modèle. La Vue n’est censée effectuer aucun traitement, elle se contente en principe d’afficher les résultats des traitements effectués par le Modèle et d’interagir avec l’utilisateur. Le Contrôleur est le chef d’orchestre de l’application, il prend en charge la gestion des événements de synchronisation pour mettre à jour la Vue ou le Modèle. II n’effectue aucun raitement et ne modifie aucune donnée, il analyse en réalité la requête du client et se contente d’appeler le Modèle adéquat puis de renvoyer la Vue correspondante sur demande.

Voici un premier exemple qui va nous permettre de mieux visualiser ce que représente réellement le modèle MVC. Nous avons cidessous une simple application graphique que nous allons décomposer en modèle MVC. Dans un premier temps, nous avons une étiquette initiale ‘ »Texte », un champ de saisie vide et un bouton. Nous allons écrire « nouveau texte » dans le champ de salsie, valider, et obtenir notre étiquette « texte » modifiée par nouveau texte ». • La vue La fenêtre, le champ de saisie, l’étiquette et le bouton. • Le contrôleur L’événement associé au bouton. • Le modèle La chaîne affichée par l’étiquette.

Voici un second exemple détaillant le fonctionnement du modèle MVC. Prenons la réaction d’une page Web dynamique suite à un clic de l’internaute sur un bouton. La page envoie, suite au cli du bouton, une requête qui sera transmise au Contrôleur pour analyse. Le Contrôleur demande ensuite au Modèle approprié d’effectue PAGF s 8 transmise au Contrôleur pour analyse. Le Contrôleur demande nsuite au Modèle approprié d’effectuer les traitements, éventuellement en interrogeant une base de données, puis renvoi le résultat à la Vue adaptée (si le Modèle ne l’a pas déjà fait).

Le Contrôleur sait quoi faire, le Modèle sait comment le faire et la Vue sait comment présenter le résultat à l’utilisateur. 3. 4. 1. 4 Le Framework Rails 3. 4. 1. 4. 1 Les Méthodes Agiles Au début de années 80, James Martin élabore une nouvelle méthode de travail, appelée RAD (Rapid Application Development), qui consiste à effectuer des gestions de projets courtes basées sur 3 phases (Cadrage, Design et Construction) et ans un délai compris entre 90 et 120 jours. Cette méthode fut ? l’origine des méthodes dites Agiles.

En 2001, les promoteurs des principales méthodes RAD se sont regroupés pour former la Agile Alliance et ont élaborés le Manifeste Agile, dont les 4 valeurs fondamentales sont • « Personnes et interactions plutôt que processus et outils » Il est préférable d’avoir une équipe soudée de développeurs moyens qui communiquent plutôt qu’une équipe d’individualistes brillants. La communication est une notion fondamentale. « Logiciel fonctionnel plutôt que documentation complète » Il est vital que l’application fonctionne.

La documentation technique est secondaire et est une charge de travail importante qui peut être néfaste si non tenue ? jour. Il est préférable de commenter abondamment le code et de transférer les compétences au sein de l’équipe. « Collaboration avec le client 6 8 le code et de transférer les compétences au sein de l’équipe. « Collaboration avec le client plutôt que négociation de contrat » Le client doit être impliqué dans le développement. On ne peut se contenter de négocier un contrat au début du projet, puls negliger es demandes du client ensuite.

Le client doit collaborer avec l’équipe et fournir un retour par rapport à ses attentes. « Réagir au changement plutôt que suivre un plan’ La planification initiale et la structure du logiciel doivent être suffisamment flexibles pou permettre l’évolution de la demande du client tout au long du projet. Les Méthodes Agiles visent donc à réduire le temps de développement en proposant une version minimale sur laquelle on greffera les fonctionnalités désirées par le client.

Le terme Agile fait donc référence à cette capacité d’adaptation qui ermets enfin de répondre aux besoins du client. Rails a été pensé pour répondre à l’ensemble de ces principes . 3. 4. 1. 4. 2 L’arborescence d’une application ROR Ruby on Rails impose au développeur l’utilisation d’une arborescence stricte qui sert à répartir les différents fichiers de l’application à développer. Chaque bout de code est ? placer dans un endroit stratégique de façon à l’exploiter le plus intelligemment possible.

Examinons d’un peu plus près les dossiers principaux de cette architecture : lapp Ce répertoire contient la majorité du travail du développeur, c’est ci que le code de l’application est décomposé en Modèles, Vues, Contrôleur et Helpers. Les Helpers (assistants) sont destinés ? accueill 7 8 décomposé en Modèles, Vues, Contrôleur et Helpers. Les Helpers (assistants) sont destinés à accueillir des fonctions éventuellement nécessaires à la Vue. Ils aident à respecter la règle qul consiste à ne pas mettre de code de traitement de données dans une Vue. config Dans ce répertoire est stocké la configuration d’accès ? l’application et les paramètres nécessaires pour la connexion à la base de données. /db Avec Rails, il est possible d’intervenir dans la bases de données directement depuis des fichiers appelés « migrations ». C’est le répertolre « db’ qul contient ce type de fichiers. ‘doc Ce répertoire accueille la documentation automatiquement générée par ‘Rdoc » /lib Ce répertoire est utilisé pour placer des librairies de code nécessaires à l’application. Cest également l’endroit où l’on place le code devant être partagé par les différents Modèles, Vues ou Contrôleurs.

Aog Ce répertoire contient des fichiers journaux très complets. /public Le serveur Web considère ce répertoire comme étant la racine de ‘application, il représente la face visible de l’application. /script Ce répertoire contient tous les scripts des outils utilisés par le développeur comme par exemple la génération d’un nouveau Modèle ou la migration de la base de données. ‘test Dans le répertoire « test » se placera tout le code nécessaire à la réalisation des tests automatiques. /tmp Ici sont placés tous les fic PAGF 18 res nécessaires ? l’application.

Des sous répertoires y sont créés pour y déposer le cache, les sessions et les connecteurs (sockets). Ivendor Ce répertoire est destiné à accueillir du code venant d’autres pplications. Ce code provient principalement de 2 sources. La première est les différents plugins existants et la seconde provient de Rails lui même. Il est en effet possible de demander à Rails de « s’autoinstaller » dans ce répertoire afin par exemple de le figer dans une certaine version et ainsi éviter les problèmes de compatibilité lors d’un projet de développement long. . 4. 1. 4. 3 La gestion du modèle MVC Le Modèle, la Vue et le Contrôleur sont respectivement gérés par l’Active Record, l’Action View et l’Action Controller, euxmêmes regroupés au sein de l’Action Pack. Active Record L’Active Record gère et englobe toute la logique Métier, il constitue le coeur de l’application. Une de ses principales fonctionnalités est l’interfaçage avec la base de donnees, encore appelé ORM (Oject Relationnal Mapping).

L’ORM permet d’établir automatiquement un lien entre la logique objet de l’application et le modèle relationnel de la base de données. Ce mapping est une fonctionnalité proposée par de nombreux framework pour éviter de manipuler un autre langage comme par exemple le SQL mais cette étape demande souvent beaucoup de configuration. Là encore ROR fait des miracles, notamment via la recommandation Agile « Convention plutôt que Configuration », méthode grâce à laquelle Rails arrive à gérer ce mapping sans aucune étape de configuration.

La seule contrain laquelle Rails arrive à gérer ce mapping sans aucune étape de configuration. La seule contrainte sera de respecter les quelques règles de syntaxe imposées. Les données mappées seront ensuite directement utilisables dans le Modèle en tant qu’objets. Exemple: Création et Enregistrement d’un nouveau client dans la table « clients » man client = Client. ew //instance nouveau client mon client. nom = « DURAND » mon_client. prenom « Jean » mon_client. ave « enregistement dans la base Exemple : Requête pour rechercher le client qui a pour nom ‘DIJRAND’ :conditions ( :nom ‘DURAND’ l) Dans cet exemple, la base de données est modifiée sans avoir utilisé la moindre ligne de SQL. Cest l’ORM de l’Active Record qui permet cela. La syntaxe SQL est néanmoins tout à fait possible, mais elle est plutôt réservée aux requêtes plus complexes difficilement formatables. La réalisation de requêtes complexes est tout de même grandement simplifiée par Ruby on Rails qui ermet de définir au sein même des classes du Modèle la façon dont sont associées les tables entre elles.

Quatre associations de bases sont disponibles : has_one (a un) has_many (a plusieurs) belongs_to (appartient à) has_and_belongs_to_many (a et appartient à plusieurs) Exemple de déclaration Article has_many :commentaires Article belongs_to :auteur Pour assurer la cohérence des données, Active Record dispose également de plusieurs contrôleurs de format pour les données saisies dans les formulaires. Les différentes méthodes existantes sont décrites cidessous