======Instance Ruby====== ===== Pré-requis ===== * Connaissance du langage Ruby * Votre application doit être compatible Ruby (MRI) 2.4 ou 1.9.3 (vieilles instances) * 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://@git.dc.gpaas.net/default.git $ git push gandi master Puis lancer la commande de déploiement : $ ssh @git.dc.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 @git.dc.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|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