Mettre en service une application Ruby on Rails

De PHPNET - Wiki
Aller à : navigation, rechercher

Les tutoriels permettant de créer un premier environnement rails se trouvent aisément sur Internet. Pour l'utilisateur qui suit les instructions, il est simple et rapide de faire fonctionner en local une application qui fonctionne et de la faire évoluer par la suite en fonction de ses propres besoins. Cet utilisateur pourra par la suite décider de faire héberger son service.
D'autres utilisateurs choisiront immédiatement une offre hébergée afin de ne pas avoir eux-mêmes à installer quoi que ce soit sur leur propre pc.

Quelque soit l'option retenue, la question que l'on finit par se poser est de savoir comment passer d'instructions obtenues sur un tutoriel et peut-être expérimentées avec succès sur un serveur local, à l'environnement PHPNET.
En effet, les tutoriels sont généraux et ne prennent pas en compte les caractéristiques propres à l'hébergeur.

Prérequis

  • Un hébergement Premium
  • Une IP dédiée (Comment obtenir une IP dédiée)

Quel répertoire ?

L'offre PHPNET habitue l'utilisateur à placer son contenu dans le répertoire 'www' ; mais si le contenu est destiné à fonctionner sous Ruby on Rails, le répertoire est spécifique : il est situé au même niveau que www et s'appelle tout simplement 'rails'.

Si le contenu n'est pas dans ce répertoire, il ne pourra pas être exécuté.

Créer le projet

Imaginons que notre projet s'appelle 'projet1', on se connecte en SSH et on entre la commande suivante :

cd /home/rails/ #on se déplace vers le répertoire dans lequel doivent se trouver les rails
rails projet1 #on crée le projet rails nommé projet1

Ceci crée automatiquement des fichiers et répertoires de base du projet.

Faire démarrer le serveur

rails fonctionne, sauf instruction contraire, avec son propre serveur web, nommé 'WEBrick' (il existe d'autres serveurs tels que 'Mongrel').
Pour le faire démarrer, il faut lancer une instruction 'ruby /home/rails/projet1/script/server -d'.

Mais, si on ne précise rien, cela fait démarrer le serveur en local, à l'adresse 127.0.0.1, inaccessible depuis l'extérieur.

Il faut donc préciser que l'on veut le rendre accessible de l'extérieur en le faisant tourner sur l'adresse IP du Premium. Pour cela, il faut lancer l'instruction suivante (imaginons que l'adresse IP du Premium est 1.2.3.4) :

ruby /home/rails/projet1/script/server -b 1.2.3.4 -d

ps: l'option '-d' permet de lancer en tache de fond le serveur WEBrick, si vous voulez débugger ce dernier, vous pouvez le lancer en "premier plan" en ne spécifiant pas cette option. Il est également possible de spécifier un port différent du port 3000 en utilisant l'option '-p NUMERODEPORT'.

Pour arrêter le serveur :

pkill -INT -f "ruby /home/rails/test/script/server"


Consulter le projet

La consultation doit lancer automatiquement la page d'index qui a été créée par défaut par rails.
Vous pouvez y accéder sur le port 3000 sur l'IP de votre serveur (ou n'importe quelle DNS pointant sur votre Premium), par exemple http://p1234.phpnet.org:3000/

Afficher une page de test 'Hello World'

Nous entrons dans ce qui fait la spécificité de rails. Les utilisateurs qui sont à ce stade savent certainement déjà qu'il s'agit d'un modèle mvc, pour model view controller (modèle vue contrôleur) et que lorsque l'internaute appelle une page, la requête passe d'abord par le contrôleur du modèle en question qui va effectuer éventuellement des traitements avant de commander l'affichage d'une page web.

Exemple simple:
Nous créons le contrôleur :

ruby script/generate controller User

Le contrôleur définit une série d'instructions avant de conduire à l'affichage d'une page web. Nous allons créer un service minimum d'affichage de la page hello world.

Modifier la vue du contrôleur "user"

Créer '/home/rails/projet1/app/views/user/index.html.erb' avec pour contenu :

<html>Hello world</html>

Test

Se rendre sur l'URL http://p1234.phpnet.org:3000/User qui devrait s'afficher 'Hello world'.
Remarque : Le serveur web attaché à rails fonctionne sur le port 3000 ; le port par défaut du protocole HTTP (le port 80) est déjà utilisé par le serveur Apache permettant d’accéder aux sites n'étant pas en Ruby on Rails, vous devrez donc spécifier le port pour accéder à votre application Ruby on Rails.