Kergoz Panic

par
 
Watilin
le
 
16/08/2012 à 00:08

Premiers pas avec Ruby

(logo Ruby) À l’occasion de mes débuts avec l’Ajax, guidé par un ouvrage remarquable – dont je ne saurais que trop peu faire l’éloge et qui se nomme Web 2.0, Bonnes pratiques Ajax de Christophe Porteneuve – j’ai fait la découverte d’un langage assez récent (1995), basé sur la souplesse et la programmation orientée objet, nommé Ruby.

Particulièrement adapté pour le développement web grâce à sa facilité de mise en place de serveurs ou encore de communication avec des bases de données, Ruby est rapidement devenu célèbre – ce qui, bien sûr, ne vous empêche pas de n’en avoir jamais entendu parler.

Immédiatement saisi par la chouetteté du langage, j’ai décidé de vous le présenter rapidement à travers ce petit tuto.

Un serveur en 6 lignes

Je vais sans plus tarder vous faire découvrir l’incroyable simplicité avec laquelle Ruby nous permet de créer un serveur local. Pensez donc, cela me rappelle mes débuts en html. Et pour cause : le principal outil est le bloc-notes !!

On commence par un petit rappel, avant d’attaquer les choses sérieuses…

Qu’est-ce vraiment qu’un serveur local ?

En temps normal, un serveur se trouve sur une machine quelque part dans le monde, et répond à des requêtes envoyées depuis un autre ordinateur. Il envoie généralement ses réponses sous forme de pages web.

Dans notre cas, le serveur se trouve sur la même machine que l’utilisateur. C’est donc un serveur comme les autres, mis à part qu’il servira des fichiers auxquels ont peut accéder normalement, via l’explorateur de dossiers habituel… Alors, me direz-vous, à quoi peut-il bien servir ? Eh bien, à recréer un mécanisme requête-réponse, afin de mieux saisir le fonctionnement des autres serveurs.

Visuellement, on ne peut pas se gourer : le serveur qu’on va construire ici ne propose pas d’explorateur graphique. Tout passera par le navigateur !

Le programme Ruby

On va commencer par installer Ruby. Sachez que sous Linux, il est très probablement déjà installé, il vous suffit de taper ruby -v pour s’en assurer.

Sous Mac OS X, il y a des chances pour que vous l’ayez aussi, si vous tournez sous Jaguar ou Puma par exemple. Si vous ne l’avez pas, allez voir sur mac.com, vous trouverez peut-être votre bonheur.

Sous Windows, vous trouverez un installeur sur le site dédié.

On peu également choisir sa version ainsi que sa plateforme sur ruby-lang.org, qui donne en bonus des explications pour l’installation.

Il ne vous reste plus qu’à installer. Là, je vous lâche, débrouillez-vous XD !

Premier script Ruby

C’est là que ça devient intéressant !

Commencez par créer un dossier qui contiendra le script, et donnez-lui le nom que vous voulez. Dans ce dossier, créez-en un autre, qui servira de racine à votre serveur local (à votre site local si vous préférez), et nommez-le [tt]racine[/tt].

Ensuite, ouvrez le bloc-notes et tapez ceci :

require 'webrick'
include WEBrick

server = HTTPServer.new(:Port = 8042)

server.mount('/', HTTPServlet::FileHandler, './racine')

trap('INT') { server.shutdown }

server.start

Hmm, obscur, n’est-ce pas ? Pas de panique, tout ceci va s’éclaircir. Commençons par les deux premières lignes : require 'webrick' et include WEBrick. Elles invoquent le package [tt]WEBrick[/tt] de Ruby. C’est lui qui permet d’utiliser les commandes suivantes,et donc de configurer un serveur aussi simplement !

Ensuite : server = HTTPServer.new(:Port =] 8042) crée le serveur à proprement parler, sur le port 8042. Ca tient en une ligne !

server.mount('/', HTTPServlet::FileHandler, './racine') associe à la racine du serveur le dossier [tt]racine[/tt] créé précédemment.

trap('INT') { server.shutdown } n’est pas utile au serveur mais permettra de l’arrêter (ça peut être pas mal ^^) en faisant une interruption, c’est-à-dire en faisant Ctrl+C

Et enfin, server.start bah… pour lancer le serveur qui vient d’être configuré !

N’oubliez pas d’enregistrer le fichier. Par convention, un script Ruby porte l’extension [tt].rb[/tt], mais ce n’est pas obligatoire. Nommez votre script [tt]serveur.rb[/tt] et placez-le à côté du dossier [tt]racine[/tt].

Tester le serveur

Faire du code c’est bien, mais le tester après c’est pas mal aussi. Pour tester le serveur, il faudrait déjà avoir quelque chose à lui faire tester… En effet, pour que le serveur vous serve des fichiers, il faut qu’il ait des fichiers, CQFD. Mettez donc des fichiers texte ou html (tout ce que vous pouvez trouver) dans le dossier [tt]racine[/tt]. Vous y êtes ?

Bien, le temps est venu de lancer le serveur. En console (ou ligne de commande pour les Windows-addicts), placez-vous dans le dossier contenant le script et entrez ceci : ruby serveur.rb

Vous verrez trois ou quatre lignes d’info vous signalant que le serveur a démarré, et qu’il est de bonne humeur.

À présent, pour faire une requête au serveur, il faut utiliser un outil qui permet de formuler des requêtes HTTP. Bigre, où trouver ça ? En fait, il s’agit… du navigateur ! Ouvrez-le donc, et tapez l’adresse suivante : http://localhost:8042/.

Et là, stupeur : rien ! Ou presque. Votre propre serveur vous refuse l’accès comme un malpropre. Mais c’est normal : par défaut, l’accès à la racine est interdite par http. Complétez donc l’adresse saisie dans le navigateur avec le nom d’un des fichiers que vous avez placé dans [tt]racine[/tt] : http://localhost:8042/nom_de_fichier.

Et ça marche !!

Conclusion

Nous avons créé un serveur vraiment rudimentaire, je ne crois pas qu’il soit possible de faire plus simple… Pensez à arrêter votre serveur en retournant dans la console pour y envoyer le signal d’interruption (Ctrl+C). Vous remarquerez que la console a gardé une trace de toutes les actions du serveur, une sorte de journal.

C’est tout pour aujourd’hui, mais je ne vous ai pas tout dit ! La prochaine fois vous verrez qu’on peut associer une adresse à un bout de script Ruby. C’est là que ça se met à ressembler à PHP, mais… ne faites pas trop la comparaison : les puristes de Ruby crieraient au sacrilège s’ils nous entendaient !

C’est cet aspect de Ruby qui est exploité pour créer des applications Ajax.

Commentaires

Aucun commentaire n’a encore été posté sur cet article.

Ajouter un commentaire

Anti-bot provisoire