Le Gemfile c’est bien et Bundler c’est formidable.
Gemfile
Avec le Gemfile, on peut (+/-) fixer (ou pas, au choix), les versions des gems utilisées.
Pour ça, plusieurs syntaxes sont possibles, un exemple étant bien plus parlant :
gem 'nokogiri'
gem 'rails', '3.0.0.beta3'
gem 'rack', '>=1.0'
gem 'thin', '~>1.1'
~> 2.0.3 équivaut à >= 2.0.3 et < 2.1.
~> 2.1 équivaut à >= 2.1 et < 3.0.
Bundle install
Petit rappel, lors d’un bundle install, bundler résout exlusivement les nouvelles versions de gems non résolues dans le Gemfile.lock.
Options dispos/utiles :
–clean Efface toutes les traces des gems non utilisées
–quiet pas de log durant l’installation
–without liste séparée par des espaces des gems à skip, combinable avec –with
Bundle update
Options dispos/utiles :
–group met à jour exclusivement les gems de ce group
–force redownload toutes les gems
–patch, –minor, –major met à jour s’il trouve une nouvelle patch, minor ou major
# Command Line Result
————————————————————
1 bundle update –patch ‘foo 1.4.5’, ‘bar 2.1.1’
2 bundle update –patch foo ‘foo 1.4.5’, ‘bar 2.1.1’
3 bundle update –minor ‘foo 1.5.1’, ‘bar 3.0.0’
Bundle exec
Toujours utiliser bundle exec, qui utilise exclusivement les gems du projet et pas celles du système.
Cela permet d’assurer une cohérence plus pointue entre les différents environnements, et d’être en corrélation avec le Gemfile.
Bundle add
Permet d’ajouter une gem dans le Gemfile tout en spécifiant sa version (la dernière publiée si pas spécifiée lors de la commande) ET de faire le bundle install
Top pour encore une fois garder de la cohérence et ne biaiser un bundle update malencontreux
Options dispos/utiles
–version, -v spécifie la version
–group, -g spécifie le/les groupes
–source, -s spécifie la source si différente de la source du Gemfile
Bundle clean
Permet de supprimer les gems non utilisées du dossier bundler (ATTENTION à où sont installées les gems, et qui/quoi les utilise !!)
–dry-run pour avoir une idée de ce qui va être supprimé