[ruby-on-rails] Comment puis-je spécifier une gem locale dans mon Gemfile?



2 Answers

En plus de spécifier le chemin (comme Jimmy l'a mentionné), vous pouvez également forcer Bundler à utiliser une gem locale pour votre environnement uniquement en utilisant 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 vu sur les docs .

Question

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?




Si vous voulez la branche aussi:

gem 'foo', path: "point/to/your/path", branch: "branch-name"



Pour utiliser le référentiel gem local dans un projet Rails, procédez comme suit:

  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. Obtention du chemin du référentiel (la commande est exécutée dans le dossier gem)

    git rev-parse --show-toplevel
    
  3. Configuration d'un remplacement local pour l'application rails

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

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

  4. Dans votre application Gemfile ajoutez la ligne suivante:

    gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
    
  5. L' bundle install cours 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 gemme et /path/to/local/git/repository partir du point 2

  6. Enfin, lancez la bundle list , pas la 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 que RubyMine ne montre pas les gemmes locales comme une bibliothèque externe. Plus d'informations sur le bug peuvent être trouvées here et here
  • Quand je change quelque chose dans la gemme locale, afin d'être chargé dans l'application de rails je devrais stop/start le serveur de rails
  • Si je change la version de la gemme, l' stopping/starting du serveur Rails me donne une erreur. Afin de le réparer, je spécifie la version gemme dans l'application de rails Gemfile comme ceci:

    gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
    



Related