web-dev-qa-db-fra.com

Pourquoi Bundle Install installe des gemmes dans le fournisseur / bundle?

Chaque fois que je fais bundle install toutes les gemmes sont installées à

app_dir/vendor/bundle

chemin et consomme beaucoup d'espace disque. J'ai également essayé d'installer des gemmes là où elles devraient être installées, c'est-à-dire des gemmes pendant le développement par ceci:

bundle install --no-deployement

mais cela ne fonctionne pas pour moi et installe des joyaux à vendor/bundle. Comment puis-je faire en sorte qu'il soit installé globalement pour toutes les applications ou à l'emplacement Ruby gemsets? J'ai également essayé de supprimer .bundle/config mais rien n'a changé.

J'utilise:

rvm version: 1.23.14
Ruby version: 2.0.0-p247
Rails 3.2.13

Voici mon ~/.bash_profile:

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
eval "$(rbenv init -)"
alias pg='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log'

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a Shell session *as a function*
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function

Ma ~/.bashrc:

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

Quelques autres informations dont vous pourriez avoir besoin:

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ which bundle
/Users/aman/.rvm/gems/Ruby-2.0.0-p247@global/bin/bundle

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ rbenv which bundle
/Users/aman/.rbenv/versions/2.0.0-p247/bin/bundle

amandeep@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ rbenv which Ruby
/Users/aman/.rbenv/versions/2.0.0-p247/bin/Ruby

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ rbenv gemset active
rbenv: NO such command `gemset'

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ which Rails
/Users/aman/.rvm/gems/Ruby-2.0.0-p247@global/bin/Rails

J'ai également essayé mais je n'ai pas aidé:

bundle install --system

et en supprimant .bundle répertoire.

S'il vous plaît, aidez-moi à installer des gemmes dans des gemmes pas vendor/bundle ou un emplacement par défaut.

53
  1. Utilisation bundle env pour afficher les chemins et la configuration de l'ensemble

  2. Après ce chemin d'ensemble défini pour ~/.rvm/gems/Ruby-2.0.0-p247 comme ça:

    bundle install --path ~/.rvm/gems/Ruby-2.0.0-p247
    

    qui est global et vous pouvez également utiliser votre propre chemin personnalisé.

  3. Publier ce bundle install n'aura plus jamais besoin de path et installera toujours toutes vos gemmes dans ce directory(~/.rvm/gems/Ruby-2.0.0-p247 in my case) pour cette application qui n'est pas dans app_folder/vendor/bundle

9

Dans votre dossier de projet, vous aurez .bundle répertoire contenant la configuration de bundler. essayez de supprimer ce dossier. il devrait réinitialiser le chemin d'installation de vos gemmes aux paramètres à l'échelle du système.

Dans le cas où vous souhaitez simplement modifier le chemin d'installation, ouvrez .bundle/config avec votre éditeur préféré devrait vous montrer le chemin vers vendor/bundle. La suppression de cette ligne la restaurera à ses valeurs par défaut sans supprimer les autres configurations que vous pourriez avoir.

En outre, un autre scénario moins fréquent est que vos paramètres à l'échelle du système soient gâchés. Selon @NaoiseGolden:

J'ai dû supprimer .bundle à partir de mon dossier d'accueil (rm -rf ~/.bundle). Vous pouvez vérifier votre configuration en exécutant bundle env

84
Iuri G.

Essayez d'installer en utilisant

bundle install --system

Je pense qu'au départ, l'installation du bundle a été exécutée avec --path flag et bundler se souviennent maintenant de cette configuration.

Depuis le bundler page de manuel

Certaines options sont mémorisées entre les appels à l'installation groupée et par le runtime Bundler.

Les appels ultérieurs à l'installation groupée installeront les gemmes dans le répertoire initialement passé à -- chemin. Le runtime Bundler recherchera des gemmes à cet endroit. Vous pouvez annuler cette option en exécutant bundle install --system.

[~ # ~] modifier [~ # ~]: Comme mentionné dans les commentaires ci-dessous, et sinon, ce installe le système de gemmes à l'échelle. Dans le cas où vous utilisez rvm, etc. pour gérer votre environnement pour différentes applications, vérifiez @ réponse d'IuriG mentionné ci-dessus.

25
mu 無

Essayez d'exécuter bundle env. Cela vous indiquera où la configuration du chemin est définie.

6
Tim Moore

Tout d'abord, selon vos informations, il semble que vous ayez installé à la fois rvm et rbenv. C'est une très mauvaise idée . Vous devez supprimer l'un d'eux (rbenv + bundler fonctionne comme un charme pour moi, n'a pas essayé rvm).

En ce qui concerne votre question, vérifiez .bundle/config dans votre projet, car toute la configuration du bundle pour ce projet se trouve là (si elle est toujours supprimée, vous pouvez en créer une nouvelle). Vous pourriez vouloir ajouter cette ligne (ou la changer, si elle est déjà là): BUNDLE_DISABLE_SHARED_GEMS: '0' pour partager des gemmes, ils vont où votre BUNDLE_PATH: est défini (BUNDLE_PATH: vendor dans mon cas).

Pour le fichier de configuration globale, regardez dans ~/.bundle/config

Cette page de manuel pourrait également être utile: bundle config

1
Rav.-

Pour installer Gem dans tout le système en évitant le fournisseur/bundle de chemin, exécutez simplement la commande suivante dans le répertoire du projet

bundle install --system
1
Rokibul Hasan