Ruby on Rails 1.2.2, premier contact
Par NiKo le samedi 3 mars 2007, 12:00 - Ruby
- Lien permanent -
11 commentaires -
Tags :
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.

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 :
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 :
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 :
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.

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 !
11 commentaires (Ajouter un commentaire)
<sectaire>
NiKo : pour l'instant tu vois une lueur, bientôt tu verras la lumière
</sectaire>
tout à fait --Thierry-- Niko
Au moins, le bouquin sera utlie à qqn, je ne l'aurais pas acheté pour rien :-P
NiCoS, qui fait le malin pendant qu'il le peut encore... :-P
NiCoS> QUOI ? Miiiiinnnnce, moi qui n'ai écrit ce billet que pour te convaincre...
Plus sérieusement, je suis ravi que tu aies trouvé ton outil, vraiment. Maintenant, Rails ou Symfony sont des outils tout autant valables, mais peut-être pour des publics différents, voila tout
Mouais, c'est pas ça qui me donne envie d'abandonner django
Vivement la prochaine réu technique en tous cas ^_^
C0il> ça permet de faire évoluer ton schéma de base de données de façon non destructive et réversible. Un tuto pour rails est à venir
Qu'est ce que tu entends par procédure de migration Niko ? Je ne connais pas du tout Rails seulement de réputation, c'est vrai que c'est troublant par rapport à Symfony, je pense que c'est un gage de qualité pour Symfony vu la notoriété de Rails.
Oui c'est certain, mais Symfony gagnerait à disposer d'une procédure facilitée de migration à la rails, c'est vraiment confortable. Un plugin serait faisable, faut juste prendre le temps de le faire...
C'est fou comme ça rappelle Symfony!! (oui oui, l'inspiration a plutôt eu lieu dans l'autre sens, je sais)
J'en étais sûr, ça ne rate jamais
Développer en root mysql sur sa machine de dev, c'est pas la mort
Se logger à sa DB en root c'est MAAAAAL !
Jusque là, ça a l'air très simple... On attend la suite avec impatience