Je voudrais que Bundler charge une gem locale. Y a-t-il une option pour cela? Ou dois-je déplacer le dossier gem dans le répertoire .bundle?Comment puis-je spécifier une gem locale dans mon Gemfile?
Répondre
Je crois que vous pouvez le faire:
gem "foo", :path => "/path/to/foo"
En plus de spécifier le chemin (comme Jimmy mentionné), vous pouvez également forcer Bundler à utiliser un petit bijou locale pour votre environnement que en utilisant la configuration suivante Option:
$ bundle config local.GEM_NAME /path/to/local/git/repository
Cela est extrêmement utile si vous développez deux pierres précieuses ou un bijou et un rails côte à côte app.
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 the docs.
J'ai des problèmes avec ceci parce que j'utilise 'BUNDLE_PATH' (construire un paquet pour la distribution). Lorsque vous faites ce que vous avez suggéré, ou la réponse de Jimmy, il ne fait que «utiliser», et ne pas installer réellement dans mon dossier 'BUNDLE_PATH'. Je n'étais pas capable de comprendre cela, aucune aide? – Automatico
Notez que cela ne fonctionnera pas avec un ** gemspec **, par discussion [ici] (https://github.com/bundler/bundler/issues/2911). – dukedave
Pour désactiver le remplacement local: 'bundle config --delete local.GEM_NAME' – alxndr
Vous pouvez également référencer une gem locale avec git si vous travaillez dessus.
gem 'foo',
:git => '/Path/to/local/git/repo',
:branch => 'my-feature-branch'
Ensuite, si elle change je cours
bundle exec gem uninstall foo
bundle update foo
Mais je ne suis pas sûr que tout le monde a besoin d'exécuter ces deux étapes.
c'est génial, mais ce n'est pas pratique si vous développez activement la gemme ... parce que vous aurez besoin de commettre chaque changement & ' bundle uninstall
Pour utiliser dépôt gem local dans un projet Rails, suivez les étapes ci-dessous:
Vérifiez si votre dossier de pierres précieuses est un dépôt git (la commande est exécutée dans le dossier de pierres précieuses)
git rev-parse --is-inside-work-tree
Obtenir chemin du référentiel (la commande est exécutée dans le dossier de gemme)
git rev-parse --show-toplevel
Mise en place d'une application dérogation locale pour le rails
bundle config local.GEM_NAME /path/to/local/git/repository
où
GEM_NAME
est le nom de votre bijou et/path/to/local/git/repository
est la sortie de la commande au point2
Dans votre application
Gemfile
ajoutez la ligne suivante :gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
Courir
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 bijou et/path/to/local/git/repository
du point2
Enfin, exécutez
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 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
ne montre pas les pierres précieuses locales comme une bibliothèque externe. Plus d'informations sur le bug se trouve here et here - Quand je change quelque chose dans la pierre locale, afin d'être chargé dans l'application rails je
stop/start
le serveur rails Si je change la
version
de la gemme,stopping/starting
le serveur Rails me donne une erreur. Pour résoudre ce problème, je spécifie la version de pierres précieuses dans l'application railsGemfile
comme ceci:gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
Si vous voulez la branche aussi:
gem 'foo', path: "point/to/your/path", branch: "branch-name"
Vous pouvez référencer des pierres précieuses avec la source : source: 'https://source.com', git repository (:github => 'git/url')
et avec le chemin d'accès local :path => '.../path/gem_name'
.Vous pouvez en apprendre plus sur Gemfiles and how to use them dans cet article.
- 1. Ruby Gem personnalisé dans Gemfile sur Heroku
- 2. Comment utiliser dans Gemfile
- 3. groupes Bundler dans mon Gemfile pas honered
- 4. Pouvez-vous désinstaller une version de gem dans gemfile?
- 5. Comment utiliser la gem locale avec bundler
- 6. Comment référencer une gem locale à partir d'un script ruby?
- 7. Comment spécifier dans Gemfile un .gemspec situé dans un sous-répertoire d'un dépôt Git
- 8. chemin de la branche gem point dans le gemfile
- 9. Installation gem Ruby locale, en utilisant Bundler
- 10. Comment spécifier le compilateur pour "gem install"?
- 11. façon correcte de spécifier les dépendances facultatives d'une gemme dans ruby Gemfile
- 12. Pourquoi mon Gemfile ne fonctionnera-t-il pas?
- 13. rails Gemfile
- 14. Groupes dans un Gemfile dans Rails 3?
- 15. mettre version rubygems dans Gemfile
- 16. Gemfile group est utilisé pour?
- 17. iPhone SDK: WebView comment spécifier une URL locale?
- 18. spécifier l'adresse IP locale dans net.DialTCP
- 19. Comment spécifier une version locale de Node pour un projet?
- 20. Gestion Heroku et Gemfile
- 21. Comment réinitialiser mon environnement gem?
- 22. La substitution locale de {gem} à/path/à/local/git/repo utilise le développement de branche mais Gemfile spécifie développer
- 23. Commande de gemme dans Gemfile
- 24. Ruby Gemfile & adaptateurs de base de données
- 25. Référencement d'une gem locale avec RVM et Bundler?
- 26. Création d'un Gemfile avec RVM
- 27. Pouvez-vous spécifier une adresse locale sur une connexion JDBC?
- 28. Puis-je renommer mon Gemfile en Gemfile.rb
- 29. Comment organiser correctement mon Gemfile for Rails 3?
- 30. Comment spécifier une interface de liaison locale à une socket multicast dans Haskell?
Un chemin codé en dur convient à une session de hack rapide, mais la solution gem local de bloudermilk est plus efficace pour les projets sous contrôle de version. Il vous permet de continuer à vérifier dans les deux projets - gem et projet en utilisant la gemme - de sorte que les autres peuvent ne pas avoir à vérifier la source gem ou partager les mêmes chemins. – mahemoff
Vous pouvez le rendre légèrement plus propre en utilisant un lien symbolique .gitignored vers votre gem local dans votre répertoire de projet - de cette façon, vous pouvez utiliser le contrôle de source sur les deux projets séparément et d'autres peuvent faire la même chose. – Dan
Quelque chose à surveiller pourrait être le printemps. Si vous utilisez un chemin local pour votre gemme, vous pouvez remarquer des versions en cache de votre gem locale comme je l'ai fait dans la console rails. S'il ne semble pas que vos changements locaux de gemme soient ramassés, essayez '' spring stop'' pour voir si c'est vraiment le problème. –