Table des matières

Instance Ruby

Pré-requis

L'instance Ruby repose sur l'utilisation d'outils standards tel que Bundler et Git.

Compatibilité Rack

L'instance Ruby Simple Hosting assume que les fichiers de votre application suivent un schéma, et qu'il contient les fichiers/dossiers suivants :

Les applications Ruby on Rails (rails > 2) devraient fonctionner sans manipulation.

Exemple :

.
├── config.ru
└── public
    └── robots.txt

Spécifier les dépendances

Afin que les dépendences de votre application Ruby soient installées, vous devez les spécifier dans un fichier nommé Gemfile, situé à la racine de votre projet, en suivant le format indiqué dans la documentation de Bundler (http://bundler.io/v1.5/man/gemfile.5.html ).

Exemple Gemfile :

source 'https://rubygems.org'
gem 'rails', '~> 4.0.0'
gem 'debugger', group: :development

Note : lors de l'installation des dépendances, les gems spécifiés dans les groupes development et test ne seront pas installés.

Gemfile.lock

Une fois vos dépendances décrites, il est nécessaire de génerer un fichier nommé Gemfile.lock via la commande bundle install. C'est ce fichier qui sera utilisé pour installer les dépendances sur votre instance.

Utilisation de la base de données

PostgreSQL

Paramètres :

Exemple de configuration de Ruby on Rails avec une base de données PostgreSQL (config/database.yml)

production:
  adapter: postgresql
  database: ruby-example
  host: localhost
  port: 5432
  username: hosting-db
  password: 
  encoding: unicode
  pool: 5

MySQL

Paramètre :

Exemple de configuration de Ruby on Rails avec une base de données MySQL (config/database.yml)

production:
  adapter: mysql2
  database: ruby-example
  socket: /srv/run/mysqld/mysqld.sock
  username: tony
  password: micelli
  encoding: utf8
  pool: 5

MongoDB

Paramètres :

Exemple de configuration de Mongoid (mongoid.yml)

production:
  sessions:
    default:
      database: ruby-example
      hosts:
        - localhost:27017

Suivre les modifications de votre application

L'instance Ruby utilise Git afin de déployer votre application une fois celle-ci poussée sur votre instance. À la racine de votre projet sur votre machine, tapez les commandes suivantes afin que Git puisse suivre les modifications de votre code :

$ git init
$ git add .
$ git commit -m "premier commit"

Vous trouverez l'url du dépôt Git de votre instance, sur la page d'administration de votre instance. Pour plus d'information sur les commandes Git, voir http://git-scm.com/book/fr.

Déploiement de votre application

Un fois votre code suivi par Git, vous devez le pousser sur votre instance :

$ git remote add gandi git+ssh://<login>@git.dc<dc_id>.gpaas.net/default.git
$ git push gandi master

Puis lancer la commande de déploiement :

$ ssh <login>@git.dc<dc_id>.gpaas.net 'deploy default.git'

Afin de déployer une branche ou un tag en particulier (par exemple une branche nommée production, il suffit de le spécifier en 2ème argument :

$ ssh <login>@git.dc<dc_id>.gpaas.net deploy default.git production

Envoi d'e-mails

Configuration de ActionMailer dans une application Ruby On Rails (config/environments/production.rb)

config.action_mailer.delivery_method = :sendmail
config.action_mailer.sendmail_settings = {arguments: '-i'}

Logs

La sortie standard (stdout) ainsi que les erreurs liées à l’exécution de l'applicatif sont stockés dans les fichiers suivants sur le disque de donnée de votre instance :

Vous pourrez notamment vérifier que votre application a démarré correctement.

Cron jobs

Sur l'instance Ruby, comme sur les autres, il est possible de faire tourner des tâches programmées (cron jobs). Les variables d'environnement pré-assignées disponible dans votre application sont aussi disponible dans vos cron jobs (voir Fonctionnement interne pour plus de détails sur les variables d'environnement).

Exemple :

1@hourly 0 test (cd /srv/data/web/vhosts/default; rake my_namespace:some_useful_task)

Pour plus d'information sur les cron jobs sur SimpleHosting, voir http://wiki.gandi.net/fr/simple/anacron.

Fonctionnement interne

L'instance Ruby utilise Uwsgi (http://uwsgi-docs.readthedocs.org/en/latest/) afin d'exécuter le code de votre application. Apache (http://httpd.apache.org/) est utilisé en frontal pour servir les fichiers statiques. Apache servira tous les fichiers présents dans le dossier nommé public (à la racine de votre projet) et relaiera toutes les autres requêtes vers Uwsgi.

Les variables d'environnement suivantes sont assignées et disponible dans votre application et dans les cron jobs :