Je dois préparer une réunion technique sur Ruby on Rails, aussi je m'y remets doucement. J'en profite donc pour passer en revue la version 1.2.2 du framework par le biais d'un petit tutoriel. Je prends pour exemple la gestion d'un carnet d'adresses simplissime.

Installation sur Ubuntu

L'installation de rails sur Ubuntu est toujours aussi simple.

Création de l'application

Vos pouvez créer votre projet rails n'importe où sur votre disque dur, par exemple dans ~/rails :

$ cd ~ && mkdir rails
$ rails contacts

Le squelette de l'application contacts est créé sous la forme d'un répertoire contenant l'arborescence par défaut d'un projet vierge.

$ cd contacts

Pour tester votre projet vierge, vous pouvez lancer Webrick, un petit serveur HTTP écrit en ruby inclus dans les librairies du framework :

$ script/server

Faites pointer votre navigateur à l'adresse http://0.0.0.0:3000/ pour admirer la page par défaut du projet.

Capture d'écran

Configuration de l'accès aux données

Dans le fichier config/databases.yml, on définit nos paramètres de connexion au SGBD, ici MySQL :

 yaml
development:
  adapter:  mysql
  database: contacts_development
  username: root
  password: password
  host:     localhost
  socket:   /var/run/mysqld/mysqld.sock

N'oubliez pas de créer une base MySQL contacts_development, hein ;)

Création d'une table dans la base données

On va utiliser le système de migration propre à rails pour garantir une évolutivité de notre modèle de données :

$ ruby script/generate migration contacts_development

On édite le fichier généré dans db/migrate/001_contacts_development.rb :

 ruby
class ContactsDevelopment < ActiveRecord::Migration

  def self.up
    create_table "contacts" do |t| 
      t.column "name", :string
      t.column "email", :string
      t.column "address", :string
      t.column "city", :string
      t.column "zip", :string
      t.column "country", :string
    end 
  end 

  def self.down
    drop_table :contacts
  end 

end

On lance la migration, ce qui pour l'heure aura pour conséquence et pour l'heure de créer notre table contacts dans la base de données :

$ rake db:migrate

Création d'un jeu de données

Nous allons créer quelques fixtures pour peupler notre table et avoir quelque chose à se mettre sous la dent. Pour cela, on crée (ou modifie) un fichier test/fixtures/contacts.yml contenant les deux entrées :

 yaml
John:
  name:    John Doe 
  email:   john@doe.com
  address: 12, rue des champs
  zip:     75009
  city:    Paris
  country: France

Bob:
  name:    Bob Doe 
  email:   bob@doe.com
  address: 1, place du pré 
  zip:     35000
  city:    Rennes
  country: France

On insère les données dans la base :

$ rake db:fixtures:load

Ces données permettront par la suite de tester plus facilement l'application.

Scaffolding

On crée un module basique de gestion de nos contacts :

$ ruby script/generate scaffold Contact

Faites pointer votre navigateur sur http://0.0.0.0:3000/contacts pour tester les scripts générés automatiquement.

Scaffolding basique dans rails 1.2.2

Ce n'est effectivement pas très beau, vous avez raison, mais c'est déjà fonctionnel... et surtout, cela ne nous a pas pris plus de 5 minutes !

À suivre

On ne s'arrêtera pas en si bon chemin, le prochain volet de ce tutoriel fera notamment évoluer notre schéma de base de données... stay tuned !