Réponses:
Ce n'est pas strictement une réponse à votre question sur l'installation des .gem
packages, mais vous pouvez spécifier toutes sortes d'emplacements gemme par gemme en éditant votre Gemfile .
:path
attribut installera le gem à partir de ce chemin sur votre machine locale.gem "foreman", path: "/Users/pje/my_foreman_fork"
:git
attribut installera le gem à partir d'un dépôt 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 l'a mentionné dans son commentaire .)
gem "foreman", :git => "https://github.com/pje/foreman.git"
Il semble que le bundler ne puisse pas utiliser les fichiers .gem prêts à l'emploi. Le pointage du chemin: vers un répertoire contenant des fichiers .gem ne fonctionne pas. Certaines personnes ont suggéré de configurer un serveur gem local (geminabox, stickler) à cet effet.
Cependant, ce que j'ai trouvé beaucoup plus simple est d'utiliser un "serveur" gem local à partir du système de fichiers: il suffit de mettre vos fichiers .gem dans un répertoire local, puis d'utiliser "gem generate_index" pour en faire un référentiel Gem
mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index
Enfin pointez le bundler vers cet emplacement en ajoutant la ligne suivante à votre Gemfile
source "file://path/to/repo"
Si vous mettez à jour les gemmes dans le référentiel, assurez-vous de régénérer l'index.
gem server
ni je ne voulais héberger l'ensemble du projet, juste le fichier .gem.
source "file://#{File.expand_path('.')}/chef-11.10.0.dev.2"
Could not fetch specs from file://Users/nakilon/....../
Par défaut, Bundler vérifiera d'abord votre système et s'il ne trouve pas de gemme, il utilisera les sources spécifiées dans votre Gemfile.
Vous pouvez forcer le bundler à utiliser les gemmes que vous déployez en utilisant "bundle package" et "bundle install --local"
Sur votre machine de développement:
bundle install
(Installe les gemmes requises et crée Gemfile.lock)
bundle package
(Cache les gemmes dans le vendeur / cache)
Sur le serveur:
bundle install --local
(--local signifie "utiliser les gemmes du vendeur / cache")
bundle install
Après cela, copiez le Gemfile au fournisseur / cache , ajoutez le dos de pierres précieuses au Gemfile et exécuter bundle install --local
bundle package
est une excellente suggestion, même maintenant, trois ans plus tard. Si votre version de Bundler est antérieure à la version 2.0 (pas encore publiée au moment de la rédaction de cet article), vous devrez l'utiliser bundle package --all
si vous souhaitez inclure des gemmes avec path
ou des git
dépendances. Cependant, cela vous donnera un rappel utile s'il détecte de telles dépendances.
--local
documentation: "Notez que si un joyau spécifique à la plate-forme existe sur rubygems.org, il ne sera pas trouvé."
Ajout .gem
à vendor/cache
semble fonctionner. Aucune option requise dans Gemfile
.
J'ai trouvé plus simple d'exécuter mon propre serveur de gemmes en utilisant geminabox
Consultez ces instructions simples .