bundle-cache - Empaquetez vos fichiers .gem nécessaires dans votre application
bundle cache
alias: package, pack
Copiez tous les fichiers .gem nécessaires pour exécuter l'application dans le répertoire vendor/cache. À l'avenir, lors de l'exécution de bundle install(1) bundle-install.1.html, utilisez les gems du cache de préférence à celles de rubygems. org.
La commande bundle cache peut également regrouper les dépendances :git et :path en plus des fichiers .gem. Cela doit être explicitement activé via l'option --all. Une fois utilisée, l'option --all sera mémorisée.
Lorsque vous utilisez des gems qui ont des packages différents pour différentes plates-formes, Bundler prend en charge la mise en cache des gems pour d'autres plates-formes où le Gemfile a été résolu (c'est-à-dire présent dans le fichier de verrouillage) dans vendor/cache. Cela doit être activé via l'option --all-platforms. Ce paramètre sera mémorisé dans la configuration de votre bundler local.
Par défaut, si vous exécutez bundle install(1) bundle-install.1.html après avoir exécuté bundle cache(1) bundle-cache.1.html, le bundler se connectera toujours à rubygems.org pour vérifier si une gemme spécifique à la plate-forme existe pour l'une des gemmes dans vendor/cache.
Par exemple, considérez ce Gemfile(5):
source "https://rubygems.org"
gem "nokogiri"Si vous exécutez bundle cache sous C Ruby, bundler récupérera la version de nokogiri pour la plate-forme "ruby". Si vous déployez sur JRuby et exécutez l'installation groupée, le bundler est obligé de vérifier si un nokogiri à plate-forme "java" existe.
Même si la gemme nokogiri pour la plate-forme Ruby est techniquement acceptable sur JRuby, elle a une extension C qui ne fonctionne pas sur JRuby. Par conséquent, le bundler se connectera toujours par défaut à rubygems.org pour vérifier s'il dispose d'une version de l'une de vos gems plus spécifique à votre plateforme.
Ce problème ne se limite pas non plus à la plate-forme "java". Un problème similaire (courant) peut se produire lors du développement sur Windows et du déploiement sur Linux, ou même lors du développement sur OSX et du déploiement sur Linux.
Si vous savez avec certitude que les gems empaquetés dans vendor/cache sont appropriés pour la plate-forme sur laquelle vous vous trouvez, vous pouvez exécuter bundle install --local pour ignorer la recherche de plus appropriés gems et utilisez celles de vendor/cache.
Une façon de vous assurer que vous disposez des bonnes versions de plate-forme de toutes vos gemmes consiste à exécuter le cache de bundle sur une machine identique et à archiver les gemmes. Par exemple, vous pouvez exécuter le cache de l'ensemble sur une boîte de préproduction identique pendant votre processus de préproduction et vérifier le fournisseur/cache avant le déploiement en production.
Par défaut, bundle cache(1) bundle-cache.1.html récupère et installe également les gems à l'emplacement par défaut. Pour regrouper les dépendances dans fournisseur/cache sans les installer à l'emplacement d'installation local, vous pouvez exécuter bundle cache --no-install.
Dans Bundler 2.1, le cache a repris les fonctionnalités de package et maintenant package et pack sont des alias de cache.