diff --git a/HowtoRails.md b/HowtoRails.md
index dedfd916..c96d48d8 100644
--- a/HowtoRails.md
+++ b/HowtoRails.md
@@ -1,138 +1,268 @@
-**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
+---
+categories: web
+title: Howto Rails
+...
-# Howto Rails
+* Documentation :
+* YAML Cookbook for Ruby :
+* Rôle Ansible :
-
+[Ruby On Rails](https://rubyonrails.org/) est un framework web libre écrit en Ruby appliquant le principe MVC (Modèle-Vue-Contrôleur). Nous l'utilisons notamment dans le logiciel [Chexpire](https://chexpire.org/).
-Mettre en place un environnement de production "Ruby On Rails" exige de trouver les bons compromis
-entre les composants système - stable et robuste par nature - et l'environnement de développement
-"Ruby On Rails" très volatile et changeant. Voici comment nous mettons cela en oeuvre.
+## Installation
-## Cas 1 : utilisation avec Passenger
+### Installation avec rbenv
-* [Documentation de Passenger pour Apache](http://modrails.com/documentation/Users%20guide%20Apache.html)
-* [Documentation de Ruby Enterprise Edition](http://www.rubyenterpriseedition.com/documentation.html)
-* [Un howto pour Yaml](http://www.yaml.org/YAML_for_ruby.html) (en parallèle avec Ruby, mais simple à comprendre)
+[rbenv](https://github.com/rbenv/rbenv) permet d'avoir un environnement compilé par utilisateur.
+C'est donc le développeur qui gère sa version de Ruby, ses Gems, etc... on ne lui installe même pas Ruby !
-### Installation
-
-On installe d'abord Ruby 1.8 et ses dépendances utiles (`irb`, `rdoc`, `ri`, …).
+> *Note* : vous devez mettre les droits `exec` sur la partition */home* pour cette installation
~~~
-# aptitude install ruby-full irb rubygems rails libactionpack-ruby1.8 libactionmailer-ruby1.8
-~~~
+# apt install rbenv build-essential libssl-dev libreadline-dev zlib1g-dev
+# apt install liblzma-dev libmariadbclient-dev
-Installer les bindings MySQL et OpenSSL (voir [#les-gems Les gems]) :
+$ eval "$(rbenv init -)"
+$ mkdir ~/.rbenv/plugins
+$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
+$ rbenv install --list
+$ TMPDIR=~/tmp rbenv install 2.5.1
+$ rbenv global 2.5.1
+$ gem install bundler rails
+$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
+
+$ ruby -v
+ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
+
+$ gem list
+
+*** LOCAL GEMS ***
~~~
-# aptitude install libmysql-ruby libopenssl-ruby libmysqlclient15-dev
-~~~
+actioncable (5.2.1)
+actionmailer (5.2.1)
+actionpack (5.2.1)
+actionview (5.2.1)
+activejob (5.2.1)
+activemodel (5.2.1)
+activerecord (5.2.1)
+activestorage (5.2.1)
+activesupport (5.2.1)
+arel (9.0.0)
+bigdecimal (default: 1.3.4)
+builder (3.2.3)
+bundle (0.0.1)
+bundler (1.16.3)
+[…]
+~~~~
-### Les gems #les-gems
-Les gems sont des paquets contentant des librairies et/ou des applications écrites en Ruby. Elles sont énormément utilisées, notamment dans Rails.
+### Installation avec ruby système
-Par défaut, aucune librairie n'est installée sous forme de gem à part les bindings MySQL et Rack (qui est une dépendance de Passenger)
-Il est préférable d'installer les bindings MySQL à la main (`libmysql-ruby`) car ils nécessitent la compilation d'extensions en C et
-risquent d'être utilisés par tous les utilisateurs.
-
-OpenSSL fait normalement partie de la librairie standard Ruby, mais n'est pas inclus dans Debian. Rails en a besoin pour fonctionner, il convient
-donc d'installer `libopenssl-ruby` manuellement.
-
-### Ruby Enterprise Edition (REE)
-
-REE est une version patchée de Ruby optimisée pour les applications Web et créée par les mêmes développeurs que Passenger.
-REE est donc censé s'intégrer parfaitement avec Passenger.
-
-Des paquets (ubuntu) existent pour REE, mais le plus simple est de le compiler à la main.
-Par défaut il s'installera dans le dossier `/opt`, en totale isolation du reste du système.
-Rubygems est livré avec REE, et est placé dans le dossier de ce dernier.
-
-Il suffit de récupérer une [archive des sources sur le site de REE](http://rubyenterpriseedition.com),
-de la décompresser et de lancer le script `./installer --no-dev-docs` en tant que root. Le reste de la procédure est indiqué
-par l'installateur.
-
-À noter qu'il faut avoir installé les paquets `libreadline-dev`, `libz-dev`, `libssl-dev` et avoir une suite de
-compilation fonctionnelle (gcc, g++, make, patch, …)
-
-### Utilisation avec Passenger
-
-Passenger est livré avec REE sous forme de gem, on peut donc l'installer juste après REE. Le mode d'installation est alors quelque peu différent :
-
-Avant tout on installe toutes les librairies nécessaires : celles de REE listées précédemment, plus les libs de développement d'Apache
+Cela permet de bénéficier des mises à jour de sécurité de Ruby, tout en gérant les Gems par utilisateur.
~~~
-# aptitude install libreadline-dev libz-dev libssl-dev apache2-prefork-dev libcurl4-openssl-dev
-~~~
+# apt install ruby ruby-dev rails
+# apt install liblzma-dev libmariadbclient-dev
-On installe ensuite REE selon la procédure définie ci-dessus, et une fois cette installation terminée, on lance la commande :
+$ export PATH="$HOME/.gem/ruby/2.3.0/bin:$PATH"
+$ gem install bundler
+$ echo 'PATH="$HOME/.gem/ruby/2.3.0/bin:$PATH"' >> ~/.bashrc
+
+$ ruby -v
+ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]
+
+$ gem list
+
+*** LOCAL GEMS ***
+
+actionmailer (4.2.7.1)
+actionpack (4.2.7.1)
+actionview (4.2.7.1)
+activejob (4.2.7.1)
+activemodel (4.2.7.1)
+activerecord (4.2.7.1)
+activesupport (4.2.7.1)
+arel (6.0.3)
+atomic (1.1.16)
+bigdecimal (1.2.8)
+binding_of_caller (0.7.2)
+blankslate (3.1.3)
+builder (3.2.2)
+bundle (0.0.1)
+bundler (1.16.3, 1.13.6)
+[…]
+~~~~
+
+
+## Utilisation
+
+### Démarrer un projet Rails
+
+
~~~
-/opt/ruby-enterprise-/bin/passenger-install-apache2-module
+$ rails --version
+Rails 4.2.7.1
+
+$ rails new foo
+$ cd foo
~~~
-L'installateur nous guide dans la procédure. Dans le cas ou le MPM d'Apache est ITK, il préviendra :
+On peut alors ajuster la configuration (routes, base de données, etc.), coder son projet, le stocker dans un repository Git, etc.
+
+Pour voir en local le résultat :
~~~
-WARNING: Apache doesn't seem to be compiled with the 'prefork' or 'worker' MPM
+$ cd foo
+$ ./bin/rails server
+=> Booting WEBrick
+=> Rails 4.2.7.1 application starting in development on http://localhost:3000
+=> Run `rails server -h` for more startup options
+=> Ctrl-C to shutdown server
+[2018-08-12 11:43:15] INFO WEBrick 1.3.1
+[2018-08-12 11:43:15] INFO ruby 2.3.3 (2016-11-21) [x86_64-linux-gnu]
+[2018-08-12 11:43:15] INFO WEBrick::HTTPServer#start: pid=12383 port=3000
~~~
-On peut cependant continuer l'installation en ignorant l'avertissement. Une fois terminée, l'installateur donne la configuration pour Apache
+On peut alors le visualiser sur
-Dans `/etc/apache2/mods-available/passenger.load` on mettra la ligne :
+### Les environnements de Rails
+
+Rails propose trois environnements d'exécution distincts·: `production`, `development` et `test`.
+
+Chacun a un but précis facilement devinable depuis son nom.
+
+Pour lancer dans un certain environnement les commandes qui agissent avec l'application (par exemple les
+tâches [Rake](http://guides.rubyonrails.org/command_line.html#rake-is-ruby-make)), il suffit de définir la
+variable d'environnement RAILS_ENV, par exemple·:
~~~
-LoadModule passenger_module /opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/gems/1.8/gems/passenger-3.0.0/ext/apache2/mod_passenger.so
+$ RAILS_ENV=production rake db:migrate
~~~
-et dans `/etc/apache2/mods-available/passenger.conf` :
+### Redémarrage optimisé
+
+Pour redémarrer une application Rails de façon optimisée, il suffit de créer ou de mettre à jour le timestamp du fichier
+`tmp/restart.txt` (avec la commande `touch` par exemple). À la prochaîne requête, l'application sera redémarrée et tout l'environement chargé de nouveau.
+
+Pour que l'application redémarre à chaque requête on peut aussi créer un fichier `tmp/always_restart.txt` et le supprimer une fois qu'on ne souhaite plus ce comportement.
+
+### Unité systemd
+
+TODO, cf https://wiki.evolix.org/HowtoSystemd#systemd-par-utilisateur
+
+### Les Gems et Bundler
+
+Les [Gems](https://rubygems.org/) sont des paquets contentant des librairies et/ou des applications écrites en Ruby.
+Elles sont souvent utilisées, notamment dans Rails.
~~~
-
- PassengerRoot /opt/ruby-enterprise-/lib/ruby/gems/1.8/gems/passenger-3.0.0
- PassengerRuby /opt/ruby-enterprise-/bin/ruby
+$ gem -v
+2.5.2.1
- PassengerEnabled off
- #RailsAutoDetect off
- #RackAutoDetect off
- PassengerFriendlyErrorPages off
+$ gem list
-
+$ gem env
+RubyGems Environment:
+ - RUBYGEMS VERSION: 2.5.2.1
+ - RUBY VERSION: 2.3.3 (2016-11-21 patchlevel 222) [x86_64-linux-gnu]
+[…]
~~~
-Puis : `a2enmod passenger`
+Les Gems peuvent se trouver à plusieurs endroits :
-Une fois REE installé il reste un dernier soucis, les binaires sont dans `/opt/ruby-enterprise-/bin`,
-et pour que les utilisateurs puissent les utiliser il y a deux options possibles :
+* installée par un paquet Debian (`/usr/lib/ruby/2.3.0/`)
+* installée en temps que Gem système (`/var/lib/gems/2.3.0/`)
+* installée en temps que Gem utilisateur (`~/.gem/ruby/2.3.0/`)
-1. Rajouter ce chemin dans le PATH par défaut de tous les utilisateurs.
-1. Créer des liens symboliques dans `/usr/bin`.
-
-Pour la deuxième solution, le script suivant permet d'automatiser la tâche :
+Une application Rails contient un fichier `Gemfile` qui précise les Gems nécessaires et leurs versions :
~~~
-#!/bin/bash
-cd /usr/bin
-for i in `ls -1d /opt/ruby-enterprise-*/bin/*`; do
- ln -s $i
-done
+source 'https://rubygems.org'
+
+# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
+gem 'rails', '4.2.7.1'
+# Use sqlite3 as the database for Active Record
+gem 'sqlite3'
+# Use SCSS for stylesheets
+gem 'sass-rails', '~> 5.0'
+# Use Uglifier as compressor for JavaScript assets
+gem 'uglifier', '>= 1.3.0'
+[…]
~~~
+[Bundler](https://bundler.io/) est l'outil de prédilection pour installer les Gems nécessaires.
-### Configuration de Passenger/mod_rails
+Avec la présence d'un fichier `Gemfile`, il suffit de lancer la commande :
-Par défaut, Passenger est activé pour tous les sites d'Apache et propose une auto-détection des environnements Rails et Rack,
-on commence par désactiver ce comportement dans `/etc/apache2/mods-available/passenger.conf` :
+~~~
+$ bundle install
+~~~
+
+Un snapshot des Gems installées est aussi gardé dans un fichier `Gemfile.lock` permettant d'accélérer la résolution des dépendances.
+
+En général, on inclut les fichiers `Gemfile` et `Gemfile.lock` dans le repository du projet.
+
+### Capistrano
+
+[Capistrano](https://capistranorb.com/) est un outil de déploiement populaire, notamment pour les applications Rails.
+
+TODO
+
+
+## Serveur web
+
+Pour une utilisation en production d'une application Rails, on peut utiliser plusieurs solutions : Puma, Unicorn, Passenger, etc.
+
+### Puma
+
+[Puma](http://puma.io/) est...
+
+TODO
+
+### Unicorn
+
+[Unicorn](https://bogomips.org/unicorn/) est...
+
+TODO
+
+### Passenger
+
+TODO : à tester / ajuster
+
+[Passenger](https://www.phusionpassenger.com/) est un serveur d'application qui propose des fonctionnalités avancées.
+
+On peut l'installer sous forme de Gem pour le développement :
+
+~~~
+$ gem install passenger
+
+$ passenger start
+=============== Phusion Passenger Standalone web server started ===============
+Environment: development
+Accessible via: http://0.0.0.0:3000/
+You can stop Phusion Passenger Standalone by pressing Ctrl-C.
+~~~
+
+On peut l'installer pour [Apache](HowtoApache) ainsi :
+
+~~~
+# apt install libapache2-mod-passenger
+~~~
+
+Par défaut, Passenger est activé pour tous les sites d'Apache et propose une auto-détection des environnements Rails et Rack, on commence par désactiver ce comportement dans `/etc/apache2/mods-available/passenger.conf` ainsi que d'autres ajustements :
~~~
- PassengerRoot /usr
- PassengerRuby /usr/bin/ruby1.8
+ PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
+ PassengerDefaultRuby /usr/bin/ruby
# On ajoute les lignes suivantes:
PassengerEnabled off
RailsAutoDetect off
RackAutoDetect off
+ PassengerFriendlyErrorPages off
PassengerTempDir /var/tmp/
PassengerUploadBufferDir /var/tmp
@@ -142,279 +272,85 @@ on commence par désactiver ce comportement dans `/etc/apache2/mods-available/pa
~~~
-### Exemple de VirtualHost pour Rails
+> *Note* : Passenger stocke tous ses fichiers temporaires dans le répertoire /tmp/ par défaut. Pour diverses raisons (de place, de droits voire de performance), il peut être intéressant d'en définir un autre. Cela ce fait via la directive Apache du module Passenger `PassengerTempDir`.
+
+Et voici un VirtualHost minimal pour Apache :
~~~
-
- ServerName redmine.evolix.net
+
+ ServerName foo.example.com
PassengerEnabled on
RailsAutoDetect on
+ #RailsEnv development
- DocumentRoot /home/redmine/www/public
-
+ DocumentRoot /home/foo/www/current
+
Allow from all
Options -MultiViews
- # Pour Apache 2 ITK
- AssignUserID {user} {group}
+ # Pour Apache ITK
+ AssignUserID foo foo
~~~
-* [#apache-itk-users Information complémentaire sur Apache ITK]
-* [Script de génération de VHost](http://forge.evolix.org/scm/viewvc.php/trunk/scripts/create_rails_vhost?view=markup&root=packweb)
+> *Note* : Passenger détermine sous quel utilisateur il va lancer l'application en se basant sur le propriétaire du fichier `config/environment.rb` de l'application Rails. Pour Apache ITK, il faut donc y placer un propriétaire identique à celui utilisé dans `AssignUserID`.
-### Trucs, astuces et détails
+> *Note* : par défaut, Passenger fait tourner l'application en mode *production*. On peut forcer un certain environnement en ajustant la directive `RailsEnv` dans le VirtualHost.
-#### Apache ITK #apache-itk-users
-Passenger détermine sous quel utilisateur il va lancer l'application en se basant sur le propriétaire du fichier
-`config/environment.rb` de l'application Rails.
+## FAQ
-Il faut donc y placer un propriétaire identique à celui utilisé dans AssignUserID
+### GEM_HOME
-#### Les environnements de Rails
-
-Rails propose trois environnements d'exécution distincts : `production`, `development` et `test`.
-
-Chacun a un but précis facilement devinable depuis son nom.
-
-Par défaut, Passenger fait tourner l'application en mode production. On peut forcer un certain environnement
-en plaçant la directive `RailsEnv ` dans le fichier de configuration du VHost.
-
-Pour lancer dans un certain environnement les commandes qui agissent avec l'application (par exemple les
-tâches [Rake](http://guides.rubyonrails.org/command_line.html#rake-is-ruby-make)), il suffit de définir la
-variable d'environnement RAILS_ENV, par exemple :
+On peut forcer l'environnement des Gems (pour ignorer `/var/lib/gems/2.3.0` par exemple) :
~~~
-$ RAILS_ENV=production rake db:migrate
+$ export GEM_HOME=/$HOME/.gem/ruby/2.3.0
~~~
-#### Redémarrage de l'application
+### Ruby Enterprise Edition (REE)
-Pour redémarrer une application Rails, il suffit de créer ou de mettre à jour le timestamp du fichier
-`tmp/restart.txt` (avec la commande `touch` par exemple). À la prochaîne requête, l'application sera
-redémarrée et tout l'environement chargé de nouveau.
+
-Pour que l'application redémarre à chaque requête on peut aussi créer un fichier `tmp/always_restart.txt`
-et le supprimer une fois qu'on ne souhaite plus ce comportement.
+[REE](http://rubyenterpriseedition.com/) est une version patchée de Ruby optimisée pour les applications Web et créée par les mêmes développeurs que Passenger.
+On peut l'installer en le compilant à la main (par défaut il s'installera dans e dossier `/opt` en totale isolation du reste du système)
+Il suffit de récupérer [les sources](http://rubyenterpriseedition.com/download.html), de la décompresser et de lancer le script `./installer --no-dev-docs` en tant que root. Le reste de la procédure est indiqué par l'installateur.
+Les dépendances classiques de compilations seront nécessaires (`apt install build-essential libssl-dev libreadline-dev zlib1g-dev`).
-#### `umask`s spéciaux
-
-Sur certains système, l'umask par défaut rend les fichiers installés par root non lisibles par le commun des utilisateurs.
-Si celà est une bonne idée, combinée avec Rubygems et Apache ITK, celà devient moins évident, et il faut veiller
-à `chmod`er correctement le dossier de Ruby pour que tous les utilisateurs puissent l'utiliser.
-
-Un exemple avec REE :
+Si l'on utilise avec Passenger, on pourra forcer l'utilisation de REE ainsi :
~~~
-# chmod -R u=rwX,g=rX,o=rX /opt/ruby-enterprise-1.8.7-2010.02/
+
+ PassengerRoot /opt/ruby-enterprise-/lib/ruby/gems/1.8/gems/passenger-3.0.0
+ PassengerRuby /opt/ruby-enterprise-/bin/ruby
+
~~~
-#### Priorités de chargement
+### Lister les Gems
-Par défaut, même lorsque `rubygems` est activé, Ruby utilisera en priorité les librairies système
-(celles installées par les paquets) plutôt que les gems. On peut cependant forcer l'utilisation d'une gem,
-et même fixer la version désirée (sinon c'est la plus récente qui est automatiquement utilisée).
-
-Cette gestion des versions doit être faite par le développeur, qui peut installer les librairies qu'il souhaite indépendamment du système.
-L'important est de savoir qu'il y a trois endroits ou on peut trouver une librairie Ruby :
-
-* Installée par un paquet (`/usr/lib/ruby/1.8/`)
-* Installée en temps que gem système (`/var/lib/gems/1.8/`)
-* Installée en temps que gem utilisateur (`~/.gem/ruby/1.8/`)
-
-#### Lister les gems
-
-Il n'existe pas de moyen de lister les gems installées uniquement sur le système, la commande `gem` cherche
+Il n'existe pas de moyen de lister les Gems installées uniquement sur le système, la commande `gem` cherche
à la fois dans le dossier `.gem` de l'utilisateur et le dossier système. La solution est d'utiliser un script
-spécialisé qui fait cette recherche.
+spécialisé qui fait cette recherche (un script `list_gems` doit traîner dans un coin…).
-Le script est disponible dans le dépôt Subversion du Pack Web Evolix, dans
-[trunk/scripts/list_gems](http://forge.evolix.org/scm/viewvc.php/trunk/scripts/list_gems?view=markup&root=packweb).
-
-#### Économiser un peu d'espace
+### Économiser un peu d'espace
Par défaut, `gem` installe la documentation aux formats RDoc (documentation html) et RI (documentation console)
-pour les gems installées. Pour éviter celà, créer un fichier `.gemrc` dans la `$HOME` de l'utilisateur avec le
+pour les Gems installées. Pour éviter celà, créer un fichier `.gemrc` dans la `$HOME` de l'utilisateur avec le
contenu suivant :
~~~
gem: --no-rdoc --no-ri
~~~
-À mettre aussi dans la `$HOME` de `root` si c'est lui qui installe les gems.
-
-#### Rails 2.3.2->2.3.5 & Passenger & les logs
-
-Une petite erreur en environnement de production affecte les versions 2.3.2 à 2.3.5 (incluse) de Rails. Les logs
-de l'application ne sont pas écrits dans le fichier `log/production.log`. Pour pallier cette erreur, il faut appliquer
-le patch qu'on trouve [ici](https://rails.lighthouseapp.com/projects/8994/tickets/3577-failsafe-middleware-should-flush-the-logger)
-(deuxième fichier).
-
-#### Répertoire temporaire de Passenger
-
-Passenger stocke tous ses fichiers temporaires dans le répertoire /tmp/ par défaut. Pour diverses raisons (de place, de droits voire de performance), il peut être intéressant d'en définir un autre. Cela ce fait via la directive Apache du module Passenger _PassengerTempDir_. Par exemple, nous mettons :
-
-~~~
-PassengerTempDir /var/tmp/
-~~~
-
-### Mise à jour de Passenger
-
-Passenger est installé en tant que gem dans _/opt/ruby-enterprise-/lib/ruby/gems/1.8/gems/_.
-Voici la procédure pour le mettre à jour :
-
-~~~
-gem update passenger
-~~~
-
-~~~
-/opt/ruby-enterprise-/lib/ruby/gems/1.8/gems/passenger-/bin/passenger-install-apache2-module
-
-~~~
-Puis modifier les chemins vers mod_passenger dans la conf d'Apache _/etc/apache2/mod-available/passenger_.{conf,load} pour pointer vers la nouvelle version (notamment les directives _LoadModule_ et _PassengerRoot_).
-Enfin, redémarrer Apache pour prendre en compte le nouveau module.
-
-### Mise à jour de REE
-
-Pour mettre à jour REE, il suffit de recommencer la procédure d'installation, la nouvelle version sera installé dans /opt/ruby-enterprise- et ne perturbera donc pas la prod existante.
-
-Pour prendre en compte la nouvelle installation de REE, il faut modifier les chemins vers REE dans la configuration d'Apache.
-
-*Important :* pour la migration de REE 1.8.7-2010.02 vers 1.8.7-2011.01, il faut ajouter cette directive dans la configuration d'Apache :
-
-~~~
-RackBaseURI /
-~~~
-
-Et enlever les éventuelles directives `RailkBaseURI`.
-
-
-## Cas 2 : utilisation avec rbenv + Unicorn
-
-*rbenv* permet d'avoir un environnement compilé par utilisateur.
-C'est donc le développeur qui gère sa version de Ruby, ses Gems, etc...
-on ne lui installe même pas Ruby !
-
-Note préalable : mettre les droits _exec_ sur la partition /home
-
-~~~
-# aptitude install build-essential curl mg
-~~~
-
-~~~
-# aptitude install python-pygments zlib1g-dev libxml2-dev \
- libxslt1-dev libmysqlclient-dev libcurl4-openssl-dev \
- libmagickcore-dev libmagickwand-dev libreadline-dev imagemagick
-~~~
-
-~~~
-$ git clone git://github.com/sstephenson/rbenv.git .rbenv
-$ git clone git://github.com/sstephenson/ruby-build.git .rbenv/plugins/ruby-build
-$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
-$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
-$ . .bash_profile
-$ rbenv install 1.9.2-p290
-$ rbenv global 1.9.2-p290
-~~~
-
-Astuces diverses :
+### rails_env
~~~
rails_env = `head -1 $(HOME}/www/current/config/database.yml | tr ':' ' '`
~~~
-### Debian 9
+### Rails 2.3.2->2.3.5 & Passenger & les logs
-#### Utiliser une version spécifique de ruby avec rbenv
-
-*rbenv* permet d'avoir un environnement compilé par utilisateur.
-
-C'est donc le développeur qui gère sa version de Ruby, ses Gems, etc... on ne lui installe même pas Ruby !
-
-Note préalable : mettre les droits _exec_ sur la partition /home
-
-~~~
-# apt install build-essential curl mg
-# apt install python-pygments zlib1g-dev libxml2-dev \
- libxslt1-dev libmysqlclient-dev libcurl4-openssl-dev \
- libmagickcore-dev libmagickwand-dev libreadline-dev imagemagick
-# apt install rbenv libssl-dev
-
-$ eval "$(rbenv init -)"
-$ mkdir ~/.rbenv/plugins
-$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
-$ rbenv install --list
-$ TMPDIR=~/tmp rbenv install 2.5.1
-$ rbenv global 2.5.1
-$ gem install bundle
-
-$ ruby -v
-ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
-$ gem list
-*** LOCAL GEMS ***
-
-bigdecimal (default: 1.3.4)
-bundle (0.0.1)
-bundler (1.16.3)
-cmath (default: 1.0.0)
-csv (default: 1.0.0)
-date (default: 1.0.0)
-did_you_mean (1.2.0)
-etc (default: 1.0.0)
-fcntl (default: 1.0.0)
-fiddle (default: 1.0.0)
-fileutils (default: 1.0.2)
-io-console (default: 0.4.6)
-ipaddr (default: 1.2.0)
-json (default: 2.1.0)
-minitest (5.10.3)
-net-telnet (0.1.1)
-openssl (default: 2.1.0)
-power_assert (1.1.1)
-psych (default: 3.0.2)
-rake (12.3.0)
-rdoc (default: 6.0.1)
-scanf (default: 1.0.0)
-sdbm (default: 1.0.0)
-stringio (default: 0.0.1)
-strscan (default: 1.0.0)
-test-unit (3.2.7)
-webrick (default: 1.4.2)
-xmlrpc (0.3.0)
-zlib (default: 1.0.0)
-~~~
+Une petite erreur en environnement de production affecte les versions 2.3.2 à 2.3.5 (incluse) de Rails. Les logs de l'application ne sont pas écrits dans le fichier `log/production.log`. Pour pallier cette erreur, il faut appliquer le patch qu'on trouve [ici](https://rails.lighthouseapp.com/projects/8994/tickets/3577-failsafe-middleware-should-flush-the-logger) (deuxième fichier).
-#### Utiliser ruby système (2.3) et Gem locales
-
-Cela permet de bénéficier des mises à jour de sécurité de ruby (mais pas des gems).
-
-~~~
-# apt install ruby ruby-dev
-
-$ export GEM_HOME=/$HOME/.gem/ruby/2.3.0
-$ export PATH="$HOME/.gem/ruby/2.3.0/bin:$PATH"
-$ gem install bundle
-
-$ ruby -v
-ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]
-$ gem list
-
-*** LOCAL GEMS ***
-
-bigdecimal (1.2.8)
-bundle (0.0.1)
-bundler (1.16.3)
-did_you_mean (1.0.0)
-io-console (0.4.5)
-json (1.8.3)
-minitest (5.9.0)
-net-telnet (0.1.1)
-power_assert (0.2.7)
-psych (2.1.0)
-rake (10.5.0)
-rdoc (4.2.1)
-test-unit (3.1.7)
-~~~
\ No newline at end of file