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
0 commentaire sur 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.
L'ergonomie web, l'utilisabilité et la qualité des logiciels sont trois grandes passions mises au services de ma profession.