grimboite/articles/dev/2014-12-30-rvm.md

6.7 KiB

Title Language Tags
Ruby Version Manager Ruby dev, ruby, environment

Il y a quelques jours, j'ai voulu essayer Jekyll, un générateur de site statique, au même titre que Pelican, Nikola ou Hyde. Il propose plusieurs avantages, notamment sa compatibilité avec GitHub Pages ou sa grande flexibilité.

En regardant le site Web, l'installation ressemble à ceci:

~ $ gem install jekyll
~ $ jekyll new my-awesome-site
~ $ cd my-awesome-site
~ $ jekyll serve

Dans la réalité, et pour un béotien en Ruby (moi :-)), on en est loin du compte. ruby et gem sont bien installés sur ma machine, mais l'installation a déjà planté deux fois avec un message d'erreur un-peu-pas-tout-à-fait-super-très-très compréhensible... L'utilisation des commandes ci-dessus a finalement bien installé ce qu'il fallait, mais impossible de retrouver les binaires. Etant adepte de virtualenv et pew, je ne désespère pas et trouve RVM, afin de créer un environnement virtuel dans lequel je pourrais déployer Jekyll.

Pour commencer, il faut ajouter la clé GPG et téléchargez RVM avec les commandes suivantes:

$ gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
$ curl -sSL https://get.rvm.io | bash -s stable

Ce script fraîchement téléchargé installe les binaires pour l'utilisateur courant, dans le répertoire ~/.rvm. Pour le désinstaller, il suffira de supprimer ce répertoire. Le chemin vers les binaires est ajouté au fichier ~/.profile. Comme expliqué dans la documentation (au moment de l'installation), ajouter un source ~/.profile à la fin de votre fichier ~/.bash_profile pour en profiter sans avoir à tout recopier.

Une cheat sheet est disponible. Le but ici est de paramétrer RVM pour l'utiliser de la même manière que l'on utiliserait virtualenv.

Installation de Ruby

RVM ne permet pas d'utiliser la version utilisée par le système. Il s'agit en fait d'un gestionnaire de versions pour Ruby (comme l'indique l'acronyme...). Pour définir la version de ruby qui sera utilisée par RVM, commencez par la commande rvm install ruby, afin de récupérer automatiquement la dernière version en date.

$ rvm install ruby
Searching for binary rubies, this might take some time.
No binary rubies available for: arch/libc-2.20/x86_64/ruby-2.2.0.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for arch.
Requirements installation successful.
Installing Ruby from source to: /home/fred/.rvm/rubies/ruby-2.2.0, this may take a while depending on your cpu(s)...
[...]
Install of ruby-2.2.0 - #complete 
Ruby was built without documentation, to build it run: rvm docs generate-ri

Pour finir, on définit la version utilisée par RVM avec la commande rvm use 2.2.0. Vérifiez que la version de Ruby correspond à celle initialisée ci-dessus grâce à ruby -v. Pour revenir à la version de base, il faut utiliser rvm use system. Vous pouvez également vérifier quelle binaire est exécuté avec which ruby, qui devrait vous retourner quelque chose comme /home/fred/.rvm/rubies/ruby-2.2.0/bin/ruby au lieu de /usr/bin/ruby.

Il est également possible d'installer une version particulière de Ruby, en utilisant la commande rvm install 2.1.0. Cela installera (par exemple) la version 2.1.0 dans le répertoire ~/.rvm/rubies/ruby-2.1.0/bin/ruby et pourra être appelée grâce à rvm use 2.1.0.

Pour revenir à la version de base, il faut utiliser rvm use system. Vous pouvez également vérifier quelle binaire est exécuté avec which ruby, qui devrait vous retourner quelque chose comme /home/fred/.rvm/rubies/ruby-2.2.0/bin/ruby au lieu de /usr/bin/ruby.

Création d'un gemset

La création d'un nouvel environnement virtuel se fait grâce à la commande rvm gemset create project_name. Toutes les commandes liées à ces environnements sont gérées par le préfixe rvm gemset, suivi de la commande souhaitée:

rvm gemset create project_name         # create a gemset
rvm gemset use project_name            # use a gemset in this ruby
rvm gemset list                        # list gemsets in this ruby
rvm gemset delete project_name         # delete a gemset
rvm 2.1.0@other_project_name           # use another ruby and gemset
rvm 2.2.0@_project --create --rvmrc    # use and create gemset & .rvmrc

Jekyll

Maintenant que toutes les étapes ci-dessus ont été réalisées, on peut passer à l'installation de Jekyll: gem install jekyll. Pour info, j'ai rencontré un problème lié au runtime ExecJS:

home/fred/.rvm/gems/ruby-2.2.0/gems/liquid-2.6.1/lib/liquid/htmltags.rb:43: warning: duplicated key at line 46 ignored: "index0"
/home/fred/.rvm/gems/ruby-2.2.0/gems/execjs-2.2.2/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
[...]

L'installation du paquet nodejs a résolu le problème... et j'ai finalement pu créer un nouveau site. Par défaut, ce site est pratiquement vide.

Le paramétrage du site se fait au travers du fichier _config.yml, notamment pour les valeurs de titre, l'email de l'auteur, la description, les noms d'utilisateurs Twitter et GitHub, ...

Pour aller plus loin:

Octopress

Octopress est un framework basé sur Jekyll. L'avantage par rapport à ce dernier est que la configuration par défaut propose quelque chose de très rapidement fonctionnel (plus rapidement qu'avec Jekyll en tout cas).

Cloner le dépôt Git, puis installer les dépendances. Installez ensuite le thème par défaut, et commencez à écrire :

### Clone du dépôt
git clone git://github.com/imathis/octopress.git octopress
cd octopress

### Installation des dépendances (toujours sur base de notre Ruby installé avec RVM)
gem install bundler
bundle install

### Installation du thème par défaut
rake install

### Création d'un nouveau post
rake new_post["My new blog post"]

### Création d'une nouvelle page
rake new_page["My new page"]

Les articles se trouvent dans le répertoire _posts, avec la structure YYYY-MM-DD-my-new-blog-post. Pour prévisualiser votre nouveau site, utilisez rake preview et rendez-vous à l'url http://localhost:4000.