Je souhaite mettre en service une application Ruby on Rails
De PHPnet Wiki.
Sommaire |
Mettre en service une application Ruby on Rails dans le cadre de l'offre Premium de PHPNET
Les tutoriaux permettant de créer un premier environnement rails se trouvent aisément sur le web.
Pour l'utilisateur qui suit les instructions et qui dispose déjà de MySQL, 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. Ensuite, cet utilisateur pourra 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.
Quelle que soit l'option retenue, la question qui finit par se poser est de savoir comment passer des
instructions obtenues sur un tutorial, et peut-être expérimentées avec succès sur un serveur local, à
l'environnement PHPNET.
En effet, les tutoriaux sont généraux et ne prennent pas en compte les caractéristiques propres à l'hébergeur.
Il s'ensuit que le service risque de ne pas fonctionner et de ne fournir aucun log.
Voici identifiés ci-dessous quelques points à vérifier avant une mise en service.
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 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 executé.
Créer l'environnement.
Imaginons que notre projet s'appelle 'recette', on se connecte en SSH et on tappe :
mkdir rails/recette #crée le répertoire recette dans le sous répertoire recette cd rails/recette #on se déplace vers le répertoire recette situé dans le répertoire rails rails recette #on crée le projet rails
Ceci crée automatiquement des fichiers et répertoires de base du projet.
Adresse de pointage
Lorsque l'on passe par PHPNET pour pointer sur un contenu, le répertoire de contenu par défaut est déjà fourni : c'est justement 'www', dans lequel il est possible de créer des sous-répertoires si nécessaire.
Pour pointer sur 'rails/recette' et non sur 'www/quelquechose', il suffit d'indiquer de sortir de www : Pour cela, ajouter /../rails à la suite de www, ce qui signifie 'entrer dans
www' puis 'sortir de www' puis 'entrer dans rails'
Exemple : site : essai.com,
Accéder à l'administration des services de PHPNET et à la suite de 'dossier de pointage /home/www' , saisir '/../
rails/recette/'
Faire démarrer le serveur
rails fonctionne, sauf instruction contraire, avec son propre serveur web, nommé 'mongrel'.
Pour le faire démarrer, il faut lancer une instruction 'ruby script/server'.
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 à l'adresse IP de son serveur.
Pour cela, il faut lancer l'instruction suivante (imaginons que l'adresse ip est 1.2.3.4) :
ruby script/server -b 1.2.3.4
Test : Consulter le site par le Web : point à voir
La consultation doit lancer automatiquement la page d'index qui a été créée par défaut par rails.
Là encore il y a un risque de frustration car il peut y avoir confusion dans les formats.
Actuellement, il semble qu'il y ait un petit souci de paramétrage. Nous ne pouvons avoir immédiatement une
page web, passons à l'étape suivante :
Afficher sa page d'accueil '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:
Il nous faut d'abord créer un modèle, appelons-le user.
Se placer dans le répertoire que nous avons créé : recette.
Pour créer le modèle :
ruby script/generate model User
Ensuite nous créons le controlleur :
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.
Modification de user_controller.rb
Il faut éditer 'app/controllers/user_controller.rb' qui n'a que deux lignes pour l'instant : Nous ajoutons entre la première et la dernière ligne
def index end
Aller dans /app/views/user
Créer 'index.html.erb' avec pour contenu :
<html> Hello world </html>
Essai.com dirigé vers la page 'hello world'
Nous allons maintenant demander à ce que les visites à l'adresse Web essai.com soient dirigées vers cette page Hello world que nous venons de créer : Pour cela nous configurons la route par défaut : Ecrire dans config/routes.rb :
map.root :controller => "user" , :action => "index"
De façon simpliste, nous pourrions dire que l'instruction qui est lue par le système lorsqu'il s'agit d'afficher 'http://www.essai.com/' est de faire ce qui est défini comme route par défaut (root), soit :consulter le contrôleur 'user' et lui demander quelle est l'instruction pour index. Nous n'avons mis aucune instruction pour index, mais l'action existe et renvoie à la page index que nous avons créée : index.html.erb
Test
http://www.essai.com:3000/ Il devrait s'afficher 'Hello world'. Remarque : Le serveur web attaché à rails fonctionne sur le port 3000 ; le port habituel, celui qu'il n'est pas nécessaire de spécifier car il est standard est le port 80 est déjà utilisé par le serveur Apache permettant d'acceder aux sites n'étant pas en Ruby on Rails.