Cours, Ruby, cours !

Ruby est un formidable langage de programmation, et de nombreuses applications réalisées en Ruby sont disponibles via l'installeur Gem.

Ruby lui-même est fourni avec Mac OS X, mais il est conseillé d'utiliser RBENV pour installer un Ruby récent et indépendant du système.

Cependant RBENV n'optimise pas l'installation, et parfois Ruby est trop lent.

Voici comment y remédier !

RBENV

Le Ruby installé avec votre système, d'office, dans Mac OS X, est parfaitement utilisable.

Mais il souffre de deux défauts :

La solution est donc d'utiliser RBENV1 pour se créer un environnement Ruby tout frais, utilisable avec les droits d'utilisateur normaux, et indépendant de la version du système.

LENT

Seulement voilà, RBENV installe Ruby sans aucune optimisation, et on se retrouve avec des temps de lancement et d'exécution beaucoup trop longs.

Par exemple, sur mon MacbookPro i5 avec SSD, lancer mon application Ayadn prenait trois bonnes secondes… et même ensuite, je trouvais que le temps de réaction dans l'app était anormalement lent.

Comparaison faite avec Ayadn installé dans le Ruby du système, c'était confirmé, car celle-ci était beaucoup (mais beaucoup) plus rapide, et se lançait instantanément !

Le coupable était donc trouvé.

RAPIDE

La solution est de désinstaller le Ruby fautif, et d'installer la nouvelle version avec les bonnes options de compilation.

D'abord, la désinstallation.

Repérez la version actuelle que vous utilisez avec :

rbenv versions

Celle qui nous intéresse est celle marquée d'un astérisque. Notez le numéro de version de Ruby, puis collez la ligne suivante dans le terminal en remplacant “2.2.0” par votre version :

sudo rbenv uninstall 2.2.0

Entrez votre mot de passe puis attendez patiemment la fin des opérations.

Ensuite, tapez gcc -v. Si la réponse contient “Apple LLVM version 6.0 (clang-600.0.56)” ou équivalent, votre machine utilise CLANG, sinon elle utilise GCC.

Si votre machine utilise GCC, faites :

RUBY_CFLAGS="-O3" rbenv install 2.2.0

Si votre machine utilise CLANG, faites :

RUBY_CFLAGS="-O3 -march=native" rbenv install 2.2.0

Attendez la fin de la compilation, puis faites :

rbenv global 2.2.0

pour forcer l'usage de cette nouvelle version sur tout votre système (ou rbenv local 2.2.0 si vous préférez la confiner à certains dossiers).

Installez ensuite vos Gems dans ce nouveau Ruby et comparez la vitesse de lancement et d'exécution…

Et voilà !


  1. Il existe d'autres utilitaires pour faire la même chose : CHRUBY, RVM… mais je préfère RBENV. 

Auteur: Eric Dejonckheere