af83

Ranger ses jolis gems dans une boîte

Cheap Stones

Chez af83, nous avons de temps à autres besoin d'un gem Ruby qui n'existe pas. Alors, on prend notre clavier à 2 mains et on le code, puis on le publie sur rubygems.org. Mais parfois, nous ne pouvons publier le gem en question pour des raisons indépendantes de notre volonté.

Pour pouvoir installer et mettre à jour facilement de tels gems, nous avons donc eu besoin d'un dépôt de gems interne. Pour cela, une possibilité est d'utiliser gemcutter, l'application derrière rubygems.org. Installer son instance est faisable mais ça fait pas mal de dépendances pour un dépôt avec 2 ou 3 gems : postgresql, redis, un compte S3, un compte hoptoad, etc.

À l'opposé, rubygems permet aussi de faire ça de manière très simpliste avec un simple gem server. Mais ce n'est pas toujours très pratique et parfois, on tombe sur des erreurs très cryptiques. Heureusement, il existe une solution intermédiaire : Gem in a Box.

Gem in a box s'installe tout simplement avec gem install geminabox, puis on lance l'application web avec son serveur applicatif préféré (thin chez nous). On a alors accès à une interface avec la liste des gems, on peut uploader de nouveaux gems et ajouter son URL à la liste des sources de rubygems (gem sources -a http://url.de.mon.depot/).

Attention, un petit piège peut apparaître en cours de route : tant que vous n'avez pas uploadé votre premier gem, le dépôt n'est pas créé et rubygems va donc râler si vous essayez d'utiliser ce dépôt. Rien de bien méchant, au premier gem uploadé, tout rentre dans l'ordre.

Au final, Gem in a Box est une manière très pratique pour avoir son dépôt de gems en quelques minutes sans se compliquer la vie et il est pratique à l'usage.

blog comments powered by Disqus