Le Coin Wiki
d'Olivier Dalle
$WikiTagline
 

Programmation Web avec Ruby on Rails — TP1

Normalement, les machines utilises en TP sont dj configures, vous pouvez passer directement l’etape 5. Les tapes 1 3 vous seront utiles si vous voulez travailler sur votre propre machine.

Mais attention, dans tous les cas, lisez quand meme l’tape 2…

Comme l’installation globale faite lors du premier TP ne fonctionne pas bien, les etapes suivantes ont ete corrige afin de vous permettre de faire une installation individuelle de la machine virtuelle vmware bitnami sur votre machine. Refaites les premieres etapes en suivant les indications annotes nouveau!

Etape 1 : installation ruby

Nous allons utiliser la ‘’pile Ruby” (ruby stack) version 2.2-X, disponible sur cette page:

Vous avez 3 faons d’utiliser cette pile, vous choisirez l’une des deux premires:

  • sous forme de machine virtuelle, executer dans vmware/fusion ou virtualbox
  • sous forme de packetage a installer directement son ordinateur
  • sous forme d’image pour cloud (mais c’est rserv aux pros car il faut s’abonner a un service)

nouveau! Sur vos machine de la fac, vous allez installer la machine virtuelle bitnami dans le repertoire /home/M1Systeme/TP_ROR

Creez-vous un sous-repertoire dans ce repertoire, place-vous dedans avec la commande cd et telechargez l’image, comme suit:

$ cd /home/M1Systeme/TP_ROR
$ mkdir $USER
$ cd $USER
$ wget http://bitnami.org/files/stacks/rubystack/2.2-2/bitnami-rubystack-2.2-2-ubuntu-10.10.zip

Lorsque l’installation est terminee, decomprimez l’archive et lancez la vm avec la commande vmplayer:

$ unzip *.zip
$ vmplayer bitnami*

Une fois que la vm est demarree, vous pouvez vous connecter avec le login ‘bitnami’ et le mot de passe ‘bitnami’. (Vous devrez les changer au demarrage).

Une fois que vous etes connecte, lancez un shell root avec la commande sudo, demarrez le serveur ssh et installez le plugin hobo:

$ sudo bash
$ /etc/init.d/ssh start
$ gem install hobo

Etape 2 : utiliser le bon ruby (a chaque fois que vous ouvrez un terminal)

nouveau! Bonne nouvelle: avec la vm bitnami, plus besoin d’executer la commande setenv.sh!!

Si vous avez installe le paquetage sur votre ordi (solution2) il faut faire attention a ne pa se tromper de version de Ruby. A chaque fois que vous commencez a travailler, il faut a configurer l’environnement. Supposons que votre rubystack est installee en /usr/local/rubystack-2.2–2/ (c’est le cas des machines de la fac), alors il faut executer la commande suivante dans la fentre shell que vous allez utiliser:

$ source /usr/local/rubystack-2.2–2/scripts/setenv.sh

Une solution radicale pour viter d’oublier est modifier de faon permanente vos variables d’environnement dans le fichier $HOME/.zshrc:

$ echo “source /usr/local/rubystack-2.2–2/scripts/setenv.sh” >> $HOME/.zshrc

Etape 3 : installer un IDE ruby

nouveau! Pour installer netbeans dans la machine virtuelle:

  • retrouvez l’adresse ip de la machine virtuelle avec la commande
  • connectez-vous par ssh depuis une nouvelle fenetre terminal, avec l’option -X
  • utilisez la commande wget pour telecharger netbeans

$ bitnami@linux:~$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:0c:29:dc:78:f9
inet addr:192.168.0.70 Bcast:192.168.0.255 Mask:255.255.255.0

$ ssh -X bitnami@192.168.0.70
The authenticity of host ‘192.168.0.70 (192.168.0.70)’ can’t be established.
RSA key fingerprint is a9:6d:1d:c3:e7:21:05:22:2c:2e:2a:a1:c2:b3:ac:f2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.0.70′ (RSA) to the list of known hosts.
bitnami@192.168.0.70′s password:
Linux linux 2.6.35–28-virtual #50-Ubuntu SMP Fri Mar 18 22:28:02 UTC 2011 i686 GNU/Linux
Ubuntu 10.10

Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/
Last login: Sun Dec 11 17:20:35 2011 from typote.olivier.net
bitnami@linux:~$ wget http://download.netbeans.org/netbeans/7.0.1/final/bundles/netbeans-7.0.1-ml-linux.sh

Je recommande d’utiliser NetBeans 7.0.X qui semble mieux supporter Ruby que son concurrent Eclipse, mais d’autres alternatives existent (y compris emacs), je vous laisse choisir. Pensez a installer les plugins additionnels pour le langage Ruby.

Etape 4 (la toute premiere fois)

Il faut installer la bonne version de hobo a l’aide de la commande gem:

$ gem install -v 1.0 hobo —user-install
WARNING: You don’t have /u/profs/dalle/.gem/ruby/1.8/bin in your PATH,
gem executables will not run.
Fetching: hobosupport-1.0.0.gem (100%)
Fetching: hobofields-1.0.0.gem (100%)
Fetching: hobo-1.0.0.gem (100%)
Fetching: multi_json-1.0.4.gem (100%)
Fetching: activesupport-3.1.3.gem (100%)
Fetching: i18n-0.6.0.gem (100%)

Fetching: rdoc-3.11.gem (100%)
Depending on your version of ruby, you may need to install ruby rdoc/ri data:
<= 1.8.6 : unsupported
= 1.8.7 : gem install rdoc-data; rdoc-data —install
= 1.9.1 : gem install rdoc-data; rdoc-data —install
>= 1.9.2 : nothing to do! Yay!
Fetching: railties-3.1.3.gem (100%)
Fetching: bundler-1.0.21.gem (100%)
Successfully installed will_paginate-3.0.2
Successfully installed hobosupport-1.0.0

Cette commande prend du temps s’excuter, car elle tlcharge et installe pas moins de 30 paquetages. Soyez patients…

Si vous obtenez le message WARNING comme dans l’exemple prcdent, pensez faire la modification suggre (en remplaant /u/profs/dalle/ par ce qui s’affiche dans votre cas!) et fermez puis re-ouvrez une fentre shell:

$ echo “export PATH=/u/profs/dalle/.gem/ruby/1.8/bin:$PATH” >> $HOME.zshrc

Le second message propos de rdoc n’est pas critique mais vous pouvez aussi faire la correction demande pour tre tranquille (nous utilisons ruby version 1.8.7), et en ajoutant le flag pour l’installation par un utilisateur non root :

$ gem install rdoc-data —user-install ; rdoc-data —install

Etape 5 : Ma premiere appli RoR

Ouvrez un terminal, en n’oubliant pas l’etape 2!

Placez vous dans un rpertoire de travail, par exemple TP_ROR:

$ cd
$ mkdir TP_ROR
$ cd TP_ROR

Utilisez la commande rails pour crer une application RoR appele UneTable. Avec Rails 2.3.X la syntaxe est la suivante:

$ rails UneTable

Vous pouvez ensuite lancer le serveur avec la commande suivante :

$ ./script/server

Et vous pouvez tudier le rsultat, visible sur la page http://localhost:3000/, qui doit ressembler ce qui suit:

Etape 6 : intialiser la base de donnees

Vous n’avaez pas vous soucier de l’installation d’un base. Par defaut RoR utilise uen version legere de BD SQL nomme SQLite. Elle est directement prte l’emploi.

Pour manipuler la base de donnes, il faut utiliser la commande rake.

Dans votre fentre shell, essayez d’abord la commande

$ rake -T

Que fait-elle? Utilisez son rsultat afin de trouver comment crer, dtruire et recrer la base. Allez-y sans crainte, ce stade vous prenez peu de risque de faire une fausse manip fatale!

Etape 7 : lancer l’environnement Netbeans

Attention, nous allons utiliser la dernire version de NetBeans (7.0.1) qui est installe en /usr/local sur les machines Linux de la fac. Pour cela vous devez donc changer votre variable PATH, par exemple l’aide de l’instruction suivante:

$ export PATH=/usr/local/netbeans-7.0.1/bin:$PATH

Essayez la commande netbeans et si cela fonctionne correctement (faites attention au numero de version qui s’affiche), ajoutez la modification de chemin la fin d evotre fichier $HOME/.profile afin de la rendre permanente.

Au dmarrage, NetBeans peut vous proposer de faire des mises jour automatique (petite fenetre en bas a droite). Acceptez et choisissez l’option qui permet de laisser les MJ se drouler en arrire plan.

Ensuite, la premire chose que vous devrez faire, c’est installer le plugin “Ruby and Rails”. Pour cela il suffit de cliquer sur le bouton “Installer des plug-ins” dans l’ong;et “Mon Netbeans” de la premire fentre qui s’affiche. Vous obtiendrez la (longue) liste suivante ou vous pourrez choisir le plugin, comme montr ci-aprs:

Etape 8 : Creer un nouveau projet dans netbeans

Ouvrez le menu fichiers, et choisissez “Nouveau…”, puis selectionnez le dernioer choix dans la catgorie “Ruby”, comme suit:

Attention, vous devrez changer deux choses partir du menu de configuration qui s’affiche ensuite:

  • Le chemin vers le projet RoR que nous avons cr l’tape 5
  • la configuration Ruby afin d’utiliser la bonne version du stack bitnami qui est en /usr/local. Pour cela vous devez cliquer sur le bouton “Manage…” qui ouvre la fenetre suivante:

Comme illustr ci-dessus, choisissez la version la plus recente dont le chemin correspond au stack bitnami (ici 1.8.7-p334).

De retour dans la menu de configuration du projet, changez la plate-forme ruby pour celle qui est dans le stack bitnami:

Voila, il ne reste plus qu’ valider pour crer le projet, et c’est parti!

Etape 9 : Etudier le code gnr

Etudiez le code initial gnr par la commande rails dans les sous-rpertoires app/, config/

Etape 10 : Initialiser Git

Git est un gestionnaire de version trs populaire et surtout trs efficace. Nous allons l’utiliser afin de pouvoir revenir en arrire en cas de fausse manip, ce qui vitera de tout recommencer depuis le dbut.

A chaque fois que vous crerez un nouveau projet RoR, pensez y initialiser git de la faon suivante:

$ cd UneTable
$ git init
Initialized empty Git repository in /u/profs/dalle/TP_ROR/UneTable/.git/
$ git add .
$ git commit -m “Initial import”

La premire commande initilise un dpt local de gestion de version et la seconde indique quels fichiers il faut suivre (tous). LA troisime demande a git d’enregistrer ce qui a chang depuis la dernire fois.

Ensuite chaque fois que vous faites des modifications, il faut demander git d’enregistrer les modifications en rappelant successivement les commandes add et commit:

$ git add .
$ git commit -m “Initial import”

Pensez la faire au minimum chaque fois que vous finissez une question.

Dans ce cas, vous pourrez ajouter une etiquette qui permet de retrouver la version associe une question:

$ git tag question10

A partir de maintenant, vous pourrez tout moment revenir cette version avec la commande

$ git checkout question10

Faisons par exemple l’experience suivante:

  • crez un fichier vide de nom toto avec la commande touch
  • demandez a git de prendre en compte ce fichier
  • demandez a git d’enregistrer le nouvel tat
  • ajoutez un nouveau tag avec_toto
  • demandez a git de revenir a la version prcdente (question10)
  • vrifiez que le fichier toto a bien disparu
  • demandez a git de revenir a la version avec toto
  • vrifiez que le fichier toto est bien revenu

Voil, c’est tout bte et treees utile!

Etape 11 Generateur et console

Commenons explorer un peu les gnrateurs. Essayez la commande suivante et tudiez son effet sur les sources de l’application.

$ ./script/generate model animal name:string
$ rake db:migrate

Comparez maintenant avec le resultat produit par cette autre commande:

$ ./script/generate scaffold personne name:string
$ rake db:migrate

Essayez maintenant de lancer l’application:

$ ./script/server

Et chargez la page suivante avec votre navigateur: http://localhost:3000/personnes/

Crez quelques enregistrements…

Ouvrez maintenant un second terminal, et lancez la commande suivante:

$ ./script/console

Vous voyez un prompt de l’interpreteur ruby s’afficher. Essayez les commandes ruby suivantes:

>> Personne.all
>> Personne.find(‘2′)