L'instance Ruby repose sur l'utilisation d'outils standards tel que Bundler et Git.
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
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.
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.
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
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
Paramètres :
Exemple de configuration de Mongoid (mongoid.yml
)
production: sessions: default: database: ruby-example hosts: - localhost:27017
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.
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
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'}
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.
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.
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 :