Instance Ruby

Pré-requis

  • Connaissance du langage Ruby
  • Votre application doit être compatible Ruby (MRI) 1.9.3
  • Votre application doit être compatible Rack (http://rack.github.io/)
  • Votre application doit utiliser Bundler (http://bundler.io/) afin de gérer ses dépendances
  • Connaissance de Git (http://git-scm.com/)
  • Avoir les programmes suivants installés sur votre ordinateur :
    • Ruby
    • Bundler
    • Git

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 :

  • config.ru - un fichier Rackup tel que spécifié dans la documentation Rack (http://rack.rubyforge.org/doc/SPEC.html)
  • public - contenant vos fichiers statiques (ce répertoire n'est pas obligatoire si vous n'avez aucun fichiers statiques

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 :

  • Nom de l'hôte : localhost
  • Port : 5432

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 :

  • Socket : /srv/run/mysqld/mysqld.sock

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 :

  • Nom de l'hôte : localhost
  • Port : 27017

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 :

  • via la console SSH : /srv/data/var/log/www/uwsgi.log
  • via SFTP: /lamp0/var/log/www/uwsgi.log

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 :

  • RAILS_ENV=production
  • RACK_ENV=production
Dernière modification: le 22/07/2015 à 23:55 par Jonathan G. (Gandi)