Scaffold avec Ruby on Rails 2.0
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 :usersNous 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
2 commentaires sur Scaffold avec Ruby on Rails 2.0 »
-
Galy le 19 août 2009 à 19h03
Si quelqu’un comprend le fonctionnement de scaffold après ton exemple il aura de la chance. Jusqu’à aujourd’hui tout ce que j’ai pu lire sur Scaffold n’est qu’une recopie pure et simple de chacun d’un texte sans doute en anglais
“ruby script/generate scaffold Contact name:string email:string”
Avec 2 champs on génére parfaitement un ecran web listant les enregistrements au de là tu m’expliques comment.
Pour l’instant le Scaffold des versions initales ne fonctionne plus rendant malheureusement trés difficile d’emploi le livre de Dave Thomas qui s’appuie dessus.
Quant à savoir comment il fonctionne maintenant c’est ce que j’attendais de ton article et que n’ai pas trouvé.
“Nous copions le framework dans le répertoire vendor de notre application” :tu as bien raison, mais ce n’est pas le problème.
“nous en profitons pour remplir dûment le fichier de configuration config/database.yml.”, pourquoi pas !
A refaire.
-
Kami le 13 mai 2010 à 20h46
Pour moi cet article a le mérite d’être simple et permet d’avoir la méthodologie pour scaffold. il me convient tt à fait
Réagir à Scaffold avec Ruby on Rails 2.0
Trackbacks sur Scaffold avec Ruby on Rails 2.0
Les trackbacks sont fermés pour cause de spam.
