J'aimerais que Bundler charge un joyau local. Y a-t-il une option pour cela? Ou dois-je déplacer le dossier Gem dans le répertoire .bundle?
Je crois que tu peux faire ça:
gem "foo", :path => "/path/to/foo"
En plus de spécifier le chemin (comme Jimmy l’a mentionné), vous pouvez aussi forcer Bundler à utiliser une gemme locale pour votre environnement uniquement à l’aide de l’option de configuration suivante:
$ bundle config local.GEM_NAME /path/to/local/git/repository
Ceci est extrêmement utile si vous développez deux gemmes ou une gemme et une application Rails côte à côte.
Notez cependant que cela ne fonctionne que lorsque vous utilisez déjà git pour votre dépendance, par exemple:
# In Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'
# In your terminal
$ bundle config local.rack ~/Work/git/rack
Comme on le voit sur les docs .
Vous pouvez également référencer un joyau local avec git si vous y travaillez.
gem 'foo',
:git => '/Path/to/local/git/repo',
:branch => 'my-feature-branch'
Ensuite, si ça change je cours
bundle exec gem uninstall foo
bundle update foo
Mais je ne suis pas sûr que tout le monde ait besoin de suivre ces deux étapes.
Pour utiliser le référentiel de gem local dans un projet Rails, suivez les étapes ci-dessous:
Vérifiez si votre dossier gem est un référentiel git (la commande est exécutée dans le dossier gem)
git rev-parse --is-inside-work-tree
Obtenir le chemin du référentiel (la commande est exécutée dans le dossier gem)
git rev-parse --show-toplevel
Configuration d'un remplacement local pour l'application Rails
bundle config local.GEM_NAME /path/to/local/git/repository
où GEM_NAME
est le nom de votre gemme et /path/to/local/git/repository
est le résultat de la commande du point 2
Dans votre application Gemfile
ajoutez la ligne suivante:
gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
Lancer bundle install
devrait donner quelque chose comme ceci:
Using GEM_NAME (0.0.1) from git://github.com/GEM_NAME/GEM_NAME.git (at /path/to/local/git/repository)
où GEM_NAME
est le nom de votre pierre et /path/to/local/git/repository
à partir du point 2
Enfin, lancez bundle list
, pas gem list
et vous devriez voir quelque chose comme ceci:
GEM_NAME (0.0.1 5a68b88)
où GEM_NAME
est le nom de votre gemme
J'observe quelques cas importants en utilisant:
Rails 4.0.2
Ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
Ubuntu 13.10
RubyMine 6.0.3
RubyMine
ne montre pas les gemmes locales en tant que bibliothèque externe. Plus d'informations sur le bogue peuvent être trouvées ici et icistop/start
le Rails serveurSi je change la version
de la gemme, stopping/starting
le serveur Rails me donne une erreur. Afin de résoudre ce problème, je spécifie la version de la gemme dans le Rails application Gemfile
comme ceci:
gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
Vous pouvez référencer des gemmes avec source: source: 'https://source.com', git repository (:github => 'git/url')
et avec chemin local :path => '.../path/gem_name'
.
Vous pouvez en apprendre plus sur Gemfiles et comment les utiliser dans cet article.