Exemple de la création d'une application très simple en minirails

Afin de montrer la suite des opérations, voici un exemple de la création d'une application Web avec minirails qui permet d'incrémenter 3 compteurs, chacun désigné par une couleur: bleu, blanc ou rouge.

La première page est la suivante:

Après avoir appuyé sur ++ dans la ligne correspondant à rouge, on obtient:

En tapant du le lien Terminer, on obtient:

Suite des étapes pour créer cette magnifique application web:

  1. Décompresser le gabarit d'une application. unzip minirails.zip
  2. Aller dans le répertoire minirails ainsi décompressé cd minirails
  3. Créer le répertoire de l'application ruby minirails compteur qui produit la sortie suivante: create compteur create compteur/app create compteur/app/controllers create compteur/app/db create compteur/app/models create compteur/app/views create compteur/app/views/layouts create compteur/script create compteur/script/server create compteur/script/generate
  4. Se déplacer dans le répertoire de l'application cd compteur
  5. Créer le contrôleur ruby script/generate controller compteur qui produit la sortie suivante: create app/controllers/compteur_controller.rb create app/models/compteur.rb create app/views/compteur create app/views/layouts/compteur.rhtml
  6. Initialiser la base de données des modèles dans le répertoire db. En minirails, un fichier texte en format CSV dont le nom est celui du modèle au pluriel (ici on ajoute un "s"). Chaque ligne est un enregistement différent qui correspondra à une instance et les différents champs sont séparés par un point-virgule. Par exemple, ici on pourrait avoir comme contenu du fichier compteur/app/db/compteurs.csv: couleur;valeur bleu;1 blanc;0 rouge;4
  7. Définir les opérations du contrôleur en éditant le fichier app/controllers/compteur_controller.rb, créé à l'étape 5, pour y ajouter les méthodes voulues qui seront appelées de l'URL. Ici on définit index, bump, save. require "../common/application_controller.rb" require "app/models/compteur.rb" class CompteurController < ApplicationController # initialisation à partir du fichier de BD def index Compteur.load_db(File.join("app","db","compteurs.csv")) @noms_valeurs=Compteur.find(:all).collect{|c|[c.couleur,c.valeur]} end def bump(id) index=id[0].to_i val=Compteur.find(index).valeur.to_i # récupérer la valeur entière val+=1 # incrémenter Compteur.find(index).valeur=val.to_s # sauver la valeur texte end def save Compteur.save_db render(:layout=>false) end end
  8. Définir les pages .rhtml dans le répertoire compteur/app/views/nom_du_modele.rhtml correspondant à chaque opération du contrôleur. Si plusieurs pages partagent les mêmes opérations, les définir dans le fichier app/views/layouts/nom_du_modele.rhtml, déjà créé à l'étape 5.

    Contenu de app/views/layouts/compteur.rhtml

    <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <title>Minirails application: compteur </title> </head> <body> <%= @content_for_layout %> <table border="1"> <% Compteur.find(:all).each do |c|%> <tr> <td><%= c.couleur %></td> <td><%= c.valeur %></td> <td><%= link_to("++",{:controller=>"compteur", :action=>"bump", :id=>c.id.to_s})%> </td> </tr> <% end %> </table> <%= link_to("Terminer",{:controller=>"compteur",:action=>"save"}) %> </body> </html>

    Contenu de app/views/compteur/index.rhtml

    <h2>Valeurs initiales des compteurs</h2>

    Contenu de app/views/compteur/bump.rhtml

    <h2>Nouvelles valeurs de compteurs...</h2>

    Contenu de app/views/compteur/save.rhtml

    <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <title>Minirails application: compteur </title> </head> <body> <h2>Merci d'avoir incrémenté nos compteurs...</h2> </body> </html>
  9. Lancer le serveur web avec la commande tapée dans une console: ruby script/server

    qui devrait afficher quelque comme ceci

    [2008-11-11 14:05:04] INFO WEBrick 1.3.1 [2008-11-11 14:05:04] INFO ruby 1.8.6 (2008-03-03) [universal-darwin9.0] [2008-11-11 14:05:04] INFO WEBrick::HTTPServer#start: pid=1732 port=3000 Attention: lancer le serveur dans le répertoire de l'application ici compteur car toutes les références sont relatives à ce dernier.
  10. Tester l'application en appelant le modèle dans un browser sur le port 3000 de votre machine, par exemple:
  11. http://localhost:3000/compteur

    En cliquant sur les ++, on peut incrémenter les compteurs. On peut aussi terminer l'application en cliquant sur le lien Terminer.

Répertoires et fichiers créés suite à ces commandes

Quelques suggestions d'extension