J'ai quelques fichiers gem que j'installe via gem install xx.gem
. Puis-je dire à Bundler de les utiliser? Ou dois-je spécifier le chemin source?
Par défaut, Bundler va d'abord vérifier votre système et s'il ne trouve pas de gemme, il utilisera les sources spécifiées dans votre Gemfile.
Ce n'est pas strictement une réponse à votre question sur l'installation des packages .gem
, mais vous pouvez spécifier tous les types d'emplacements gemme par gemme en modifiant votre Gemfile .
:path
installera la gem à partir de ce chemin sur votre ordinateur local.gem "foreman", path: "/Users/pje/my_foreman_fork"
:git
installera la gem à partir d'un référentiel git distant.gem "foreman", git: "git://github.com/pje/foreman.git"
# ...or at a specific SHA-1 ref
gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c"
# ...or branch
gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby"
# ...or tag
gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"
(Comme @JHurrah mentionné dans son commentaire .)
Apparemment, le groupeur ne peut pas utiliser les fichiers .gem immédiatement. Pointant le: chemin vers un répertoire contenant des fichiers .gem ne fonctionne pas. Certaines personnes ont suggéré d'installer un serveur de gem local (geminabox, stickler) à cet effet.
Cependant, ce que j’ai trouvé beaucoup plus simple, c’est d’utiliser un "serveur" de gem local à partir du système de fichiers: Il suffit de placer vos fichiers .gem dans un répertoire local, puis d’utiliser "gem generate_index" pour en faire un référentiel de gem
mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index
Enfin, pointez le bundle sur cet emplacement en ajoutant la ligne suivante à votre Gemfile
source "file://path/to/repo"
Si vous mettez à jour les gems dans le référentiel, veillez à régénérer l'index.
Je décompresserais votre pierre précieuse dans le dossier du fournisseur de l'application
gem unpack your.gem --target /path_to_app/vendor/gems/
Ajoutez ensuite le chemin sur le Gemfile pour lier la gemme décompressée.
gem 'your', '2.0.1', :path => 'vendor/gems/your'
Vous pouvez forcer le bundler à utiliser les gems que vous déployez à l'aide de "bundle package" et de "bundle install --local"
Sur votre machine de développement:
bundle install
(Installe les gemmes requises et rend Gemfile.lock)
bundle package
(Met en cache les gemmes dans vendeur/cache)
Sur le serveur:
bundle install --local
(--local signifie "utiliser les gemmes de vendor/cache")
Ajouter .gem
à vendor/cache
semble fonctionner. Aucune option requise dans Gemfile
.
J'ai trouvé plus facile de faire fonctionner mon propre serveur Gem avec geminabox
Voir ces instructions simples .