Scaffold avec Ruby on Rails 2.0

Le 13 janvier 2008 à 15h39 | Publié sous | 0 commentaire

La création d’applications ultra rapide et de manière particulièrement impressionnante grâce au scaffolding a été pour beaucoup dans le succès du framework de développement web Ruby on Rails. Cette méthode, francisée en un peu élégant échafaudage permet de générer automatiquement une application en fonction de son schéma de base de donnée, permettant d’implémenter immédiatement tout ce qu’il faut pour faire du CRUD (create, read, update, delete). Le scaffolding est donc particulièrement utile pour commencer très rapidement une application et permettre immédiatement la saisie des données par les utilisateurs à venir.

L’arrivée de Ruby on Rails 2.0 a entraîné pas mal de changements dans l’existant, en supprimant notamment la possibilité de générer son CRUD à la volée avec la directive :scaffold dans un controller. Cette dernière permettait de créer son application à la volée chaque fois qu’un utilisateur souhaitait y accéder sans avoir à créer tous les fichiers nécessaires.

On commence par créer une application Rails. Rails 2.0 introduit SQLite comme base de données par défaut, on va donc spécifier que l’on veut travailler avec MySQL. Rails crée un répertoire nommé mykillerapp et y copie tous les fichiers nécessaires.

7el.net:~/Documents/code/typo/trunk$ rails mykillerwebapp -d 7el.net:~/Documents/code/typo/trunk$ cd mykillerwebapp 7el.net:~/Documents/code/typo/trunk$ rake rails:freeze:gems

La dernière ligne, rake rails:freeze:gems ne va pas directement nous servir, mais c’est une bonne habitude à prendre. Nous copions le framework dans le répertoire vendor de notre application. Ainsi, nous sommes certains que celle-ci tournera quelle que soit la version de Rails installée sur la machine de déploiement. Et pendant que Rails se copie gentiment, nous en profitons pour remplir dûment le fichier de configuration config/database.yml.

7el.net:~/Documents/code/typo/trunk$ ./script/generate scaffold user\ login:string\ password:string\ email:string \ presentation:text\ group_id:integer exists app/models/ exists app/controllers/ exists app/helpers/ create app/views/users exists app/views/layouts/ exists test/functional/ exists test/unit/ create app/views/users/index.html.erb create app/views/users/show.html.erb create app/views/users/new.html.erb create app/views/users/edit.html.erb create app/views/layouts/users.html.erb create public/stylesheets/scaffold.css dependency model exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/user.rb create test/unit/user_test.rb create test/fixtures/users.yml create db/migrate create db/migrate/001_create_users.rb create app/controllers/users_controller.rb create test/functional/users_controller_test.rb create app/helpers/users_helper.rb route map.resources :users

Nous venons de créer le modèle, la vue et le contrôleur correspondant à la table utilisateurs de notre application. L’utilisateur se définit par un identifiant, un mot de passe, un email, une description et l’appartenance à un groupe. Nous avons également généré un fichier de migration qui va nous permettre de créer la table idoine. Nous allons maintenant créer la base de données et charger le fichier de migration.

7el.net:~/Documents/code/typo/trunk$ rake db:drop:all 7el.net:~/Documents/code/typo/trunk$ rake db:create:all 7el.net:~/Documents/code/typo/trunk$ rake db:migrate

Rails 2.0 introduit la création de la base dans les taches rake. Nous créons les bases de test, développement et production, puis nous chargeons la migration dans la base de développement. Nous allons maintenant lancer le serveur d’application et commencer à inscrire nos utilisateurs :

7el.net:~/Documents/code/typo/trunk$ ./script/server

Voilà, c’est fait, votre application est maintenant accessible sur http://localhost:3000/users

Commenter »

Laisser un commentaire

Merci de vous exprimer dans un français correct. Les commentaires déplacés, injurieux et le spam seront supprimés.

Les trackbacks sont fermés pour cause de spam.