Utiliser Bundler dans un script en Ruby
Parfois lorsque l’on écris un script Ruby on a besoin d’utiliser des gems externes pour s’intégrer avec une API tierce, ou faciliter la connexion à une base de donnée.
Par exemple si on peut souhaiter ajouter de la coloration pour produire des messages
require 'rainbow'
puts Rainbow("My very important message in red").red
Mais au moment de déployer ce script comment s’assurer que ces dépendances seront bien présentes ? Et seront-elles installées dans les version attendues pour lequel notre script a été testé ?
Que faire alors ? Créer une gem semble trop lourd pour notre script, et il est pas conseillé d’attendre des utilisateurs qu’ils fassent l’installation d’eux-mêmes (ça passe pour une gem mais pour un script qui commencerait à en avoir 4-5 ça fait beaucoup).
Heureusement Bundler est là pour nous, en effet l’installateur offre un module qu’on peut inclure dans notre script et qui offre toutes les fonctionnalités d’un fichier Gemfile mais pour définir nos gems à l’intérieur du script.
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'rainbow', '~> 3.0.0'
end
puts Rainbow("My very important message in red").red
Ainsi au lancement du script Bundler se chargera de vérifier que les gems déclarées seront bien installées, procédera au téléchargement si besoin, et enfin celles-ci seront automatiquement chargées pour être utilisées.