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?

311
demandé sur gotqn 2010-12-20 11:24:20

6 réponses

je crois que vous pouvez le faire:

gem "foo", :path => "/path/to/foo"
479
répondu Jimmy Cuadra 2010-12-20 08:51:32

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 .

204
répondu bloudermilk 2018-02-02 11:11:50

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.

28
répondu Rimian 2013-04-25 09:03:44

pour utiliser un dépôt gem local dans un projet Rails, suivez les étapes ci-dessous:

  1. 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
    
  2. obtenir le chemin du dépôt (la commande est exécutée dans le dossier gem)

    git rev-parse --show-toplevel
    
  3. mise en place d'un dispositif de surpassement local pour les rails application

    bundle config local.GEM_NAME /path/to/local/git/repository
    

    GEM_NAME est le nom de votre gemme et /path/to/local/git/repository est la sortie de la commande au point 2

  4. dans votre demande Gemfile ajouter la ligne suivante:

    gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
    
  5. 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) 
    

    GEM_NAME est le nom de votre gem et /path/to/local/git/repository du point 2

  6. enfin, exécuter bundle list , pas gem list et vous devriez voir quelque chose comme ceci:

    GEM_NAME (0.0.1 5a68b88)
    

    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 rails Gemfile comme ceci:

    gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
    
16
répondu gotqn 2017-01-03 15:49:11

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.

0
répondu Nesha Zoric 2018-03-09 15:33:59

Si vous voulez que la direction de l':

gem 'foo', path: "point/to/your/path", branch: "branch-name"
-2
répondu C Johnson 2015-06-18 22:27:04