Introduction à Ruby on Rails cours pdf


Télécharger Introduction à Ruby on Rails cours pdf

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Introduction à Ruby on Rails cours pdf

...

 (Ruby on) Rails ?

  • Un framework pour les applications Web
  • Écrit avec et grâce à Ruby
  • Inventé par David Heinemeier Hansson
  • Souple, intégré, dynamique, élégant, productif... agile

Un langage de script objet, très dynamique, très souple, avec une syntaxe élégante, qui reprend les bonnes idées de Smalltalk, Lisp, ou Perl

Quelques petites indications sur la syntaxe de Ruby, suffisantes pour ce qui va suivre

... ... ...

Installation

Tout au long de cet article, nous allons nous amuser à développer une application de gestion de contacts. Nous allons, en fait, nous limiter, dans un premier temps, à créer un "?catalogue?" de personnes avec, pour chacune, son nom, son prénom, son adresse mail et son numéro de téléphone. Dans sa première version, notre application sera relativement spartiate, ce qui ne veut pas dire qu’elle ne devra pas rendre les services minimums que sont l’ajout, la modification et la suppression de contacts, plus un moyen d’en afficher la liste complète.

Avant de commencer, il faut bien entendu installer Rails. Pour cela, je vous conseille d’utiliser RubyGems en précisant que vous souhaitez installer les dépendances?:

$ sudo gem install rails -y

Bulk updating Gem source index for:

Successfully installed rails-1.2.4

Successfully installed activesupport-1.4.3

Successfully installed activerecord-1.15.4

Successfully installed actionpack-1.13.4

Successfully installed actionmailer-1.3.4

Successfully installed actionwebservice-1.2.4

Installing ri documentation for activesupport-1.4.3...

Installing ri documentation for activerecord-1.15.4...

Installing ri documentation for actionpack-1.13.4...

Installing ri documentation for actionmailer-1.3.4...

Installing ri documentation for actionwebservice-1.2.4...

Installing RDoc documentation for activesupport-1.4.3...

Installing RDoc documentation for activerecord-1.15.4...

Installing RDoc documentation for actionpack-1.13.4...

Installing RDoc documentation for actionmailer-1.3.4...

Installing RDoc documentation for actionwebservice-1.2.4...

$

Comme vous pouvez le voir, l’installation de rails a entraîné l’installation des packages activesupport, activerecord, actionpack, actionmailer et actionwebservices. Pour ceux qui se demandent où sont passés ActionView et ActionController, ils sont dans actionpack.

Rails étant installé, nous pouvons mettre en place le squelette de notre application. Il suffit d’invoquer la commande rails en lui passant en argument le nom de notre application?:

$ rails address_book       create       create  app/controllers create  app/helpers       create  app/models       create app/views/layouts       create  config/environments       ...       create        create         create        create 



$

Nous reviendrons un peu plus tard sur les fichiers générés et leur organisation. Pour le moment, nous allons nous concentrer sur l’essentiel.

Base de données et migration

La première chose que nous devons faire maintenant consiste à créer le schéma de notre base de données. Ceci implique de savoir quelle base nous voulons utiliser. Rails est très ouvert sur le sujet, et vous avez, en standard, le choix entre MySQL, PostgreSQL, Oracle ou SQLite (2 ou 3). Mais si vous préférez SQL Server (sic), Informix, DB2, Firebird, Sybase ou toute autre base, il faudra installer l’adaptateur correspondant. Vous trouverez toutes les informations nécessaires sur le site?[2] de Ruby on Rails. Dans cette présentation, nous ferons le choix d’SQLite3. Cette base est minimaliste, mais couvre largement nos besoins.

Le paramétrage de la base de données se fait au moyen du fichier situé dans le répertoire de notre application. Plaçons-nous dans le répertoire address_book et éditons ce fichier?:

# MySQL (default setup).  Versions 4.1 and 5.0 are recommended.

# development:

  adapter: mysql

  database: address_book_development   username: root password:   host: localhost

# Warning: The database defined as ‘test’ will be erased and

# re-generated from your development database when you run ‘rake’. # Do not set this db to the same as development or production.

test:

  adapter: mysql

  database: address_book_test   username: root   password:

  host: localhost

production:

  adapter: mysql

  database: address_book_production   username: root password:   host: localhost

Comme vous pouvez le voir, ce fichier est en YAML?[3]. Je vous laisse consulter la documentation de ce langage. Mais ne perdez pas trop de temps, car c’est la seule fois que nous allons voir un tel fichier et il est suffisamment lisible pour ne pas nous imposer de devenir un spécialiste du domaine.

Rails nous a préparé une configuration pour MySQL. C’est en effet la base "?par défaut?". Nous allons donc modifier le fichier en précisant que nous utilisons l’adaptateur sqlite3. Nous allons également indiquer quels sont les fichiers de base de données. Voici à quoi doit ressembler ce fichier après modification.

development:

  adapter: sqlite3

  database: db/address_book_development.sqlite3

test:   adapter: sqlite3

  database: db/address_book_test.sqlite3

production:

  adapter: sqlite3   database: db/address_book_production.sqlite3

Sachez que nous aurions très bien pu demander à Rails de créer directement un fichier de paramétrage pour sqlite3. Il suffit pour cela d’utiliser l’option --database= (ou -d) de la commande rails, suivie du type de base que nous souhaitons utiliser. Dans notre cas, cela aurait donné?:

rails address_book -d sqlite3

Nous aurions ainsi économisé l’édition et la modification de ce fichier. Parfois, chaque seconde compte?;)

Maintenant que nous avons précisé quelle base nous voulons utiliser, nous pouvons créer le schéma. Nous avons besoin pour le moment d’une seule table dans laquelle nous allons stocker nos contacts.

Habituellement, pour créer un schéma de base de données, nous devons avoir les notions de SQL nécessaires à l’écriture d’un script de création de nos tables. Avec Ruby on Rails, nous allons nous contenter de code Ruby.

De plus, comme je l’ai signalé un peu plus haut, Rails utilise les principes de l’ORM. Il nous faut donc également un objet faisant le mapping avec notre table. Pour créer ces différents éléments, nous allons utiliser la commande generate de rails en lui précisant que nous voulons un modèle contact?:

$ ruby script/generate model contact       exists  app/models/ exists  test/unit/       exists  test/fixtures/       create        create         create        create  db/migrate



      create 

$

Le seul fichier que nous allons regarder pour le moment est . C’est lui qui décrit le schéma SQL de notre table, mais, comme promis, en utilisant une syntaxe purement Ruby?:

class CreateContacts < ActiveRecord::Migration   def

    create_table :contacts do |t|     end   end

  def      drop_table :contacts   end end

Il n’y a pour le moment pas grand-chose dans ce fichier. Il contient en fait une déclaration de classe (CreateContacts) comprenant elle-même deux méthodes?: up et down. Nous remarquons immédiatement que nous demandons, dans la méthode up, de créer une table contacts (:contacts). C’est le sens de l’appel à la méthode create_table. Notez bien la présence du s à la fin de :contacts. En effet, nous avons demandé à Rails de créer un modèle contact (sans s donc) et pourtant rails a pluralisé le nom de notre table. C’est tout à fait logique en fait, car nous allons bien y stocker plusieurs enregistrements?! Ne modifions rien pour le moment et retournons dans notre console pour exécuter la commande suivante?:

$ rake db:migrate

(in /Users/greg/Desktop/address_book)

== CreateContacts: migrating ==================================

-- create_table(:contacts)

   -> 0.0871s

== CreateContacts: migrated (0.0872s) ========================= $

Voilà, nous venons de créer notre table contacts dans la base SQL. Vous pouvez le vérifier?:

$ sqlite3 db/address_book_development.sqlite3 <<< .dump

BEGIN TRANSACTION;

CREATE TABLE schema_info (version integer);

INSERT INTO "schema_info" VALUES(1);

CREATE TABLE contacts ("id" INTEGER PRIMARY KEY NOT NULL);

COMMIT;

$

Conformément à ce que nous avons, ou plutôt ce que nous n’avons pas, écrit dans le fichier , nous nous retrouvons avec une table contacts. Bien que nous n’ayons rien demandé, cette table possède un champ id. Ce champ est automatiquement ajouté par Rails. Il constitue la clé primaire de notre table.

Il est maintenant temps d’ajouter nos champs nom, prénom, email et téléphone. Pour cela, nous pourrions être tenté de modifier le fichier . Eh bien soit, allons-y...

class CreateContacts < ActiveRecord::Migration   def      create_table :contacts do |t|

      t.column :nom,       :string

      t.column :prenom,    :string

      t.column :email,     :string

      t.column :telephone, :string     end   end

  def      drop_table :contacts   end end

L’ajout des colonnes se fait en utilisant la méthode column prenant en paramètre le nom et le type de chaque colonne. En plus de ces deux paramètres obligatoires, vous pouvez préciser différentes options permettant de définir si le champ peut être nul ou non, sa taille... Je vous laisse regarder la documentation?[4] des API Rails pour plus de détails. Dans notre table, nous n’utilisons que des champs de type chaîne de caractères (:string). Bien entendu, vous pouvez en utiliser d’autres?: :primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean. Encore une fois, je vous renvoie vers la documentation...

   



229