Comment puis-je spécifier une gemme locale dans mon Gemfile?
J'aimerais que Bundler charge un bijou local. Est-il une option pour que? Ou je dois déplacer le dossier gem dans le .répertoire du bundle?
6 réponses
je crois que vous pouvez le faire:
gem "foo", :path => "/path/to/foo"
en plus de spécifier le chemin (comme Jimmy l'a mentionné) , vous pouvez également forcer Bundler à utiliser un gem local pour votre environnement seulement en utilisant l'option de configuration suivante:
$ bundle config local.GEM_NAME /path/to/local/git/repository
c'est extrêmement utile si vous développez deux gemmes ou un gem 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 à la les docs .
vous pouvez également faire référence à un bijou local avec git si vous êtes en train de travailler dessus.
gem 'foo',
:git => '/Path/to/local/git/repo',
:branch => 'my-feature-branch'
puis, si elle change je cours
bundle exec gem uninstall foo
bundle update foo
mais je ne suis pas sûr que tout le monde doit exécuter ces deux étapes.
pour utiliser un dépôt gem local dans un projet Rails, suivez les étapes ci-dessous:
-
vérifiez si votre dossier gem est un dépôt git (la commande est exécutée dans le dossier gem)
git rev-parse --is-inside-work-tree
-
obtenir le chemin du dépôt (la commande est exécutée dans le dossier gem)
git rev-parse --show-toplevel
-
mise en place d'un dispositif de surpassement local pour les rails application
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 la sortie de la commande au point2
-
dans votre demande
Gemfile
ajouter la ligne suivante:gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
-
Running
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 gem et/path/to/local/git/repository
du point2
-
enfin, exécuter
bundle list
, pasgem list
et vous devriez voir quelque chose comme ceci:GEM_NAME (0.0.1 5a68b88)
où
GEM_NAME
est le nom de votre gemme
quelques cas importants que j'observe 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
- il semble
RubyMine
n'est pas affichage de gemmes locales comme bibliothèque externe. Plus d'informations sur le bug peut être trouvé ici et ici - quand je change quelque chose dans le gem local, pour être chargé dans l'application rails je devrais
stop/start
le serveur rails -
si je change le
version
du gem,stopping/starting
le serveur Rail me donne une erreur. Pour régler ce problème, je suis en précisant la version gem dans l'application railsGemfile
comme ceci:gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
vous pouvez référencer des gemmes avec la source: source: 'https://source.com', git repository (:github => 'git/url')
et avec le chemin local :path => '.../path/gem_name'
.
Vous pouvez en savoir plus sur Gemfiles et comment les utiliser dans cet article.
Si vous voulez que la direction de l':
gem 'foo', path: "point/to/your/path", branch: "branch-name"