web-dev-qa-db-fra.com

Confusion entre Rubygems, Bundler et RVM

J'ai lu " Relations entre Rubygems, Bundler et RVM " avant de le redemander.

Eh bien, il y a beaucoup de questions comme celle-ci, mais les personnes qui ont répondu disent qu'elles travaillent avec Rubygems, RVM et Bundler, et elles n'ont pas expliqué comment chacune d'elles fonctionne isolément.

Je suis vraiment confus avec la façon dont les trois fonctionnent isolément lorsque nous installons des gemmes. S'il vous plaît, ne me dites pas comment vous travaillez, ce qui m'aidera, mais je n'apprendrai pas ce qui se passe lorsque nous jouons avec eux.

Ma confusion peut être décomposée en ces questions. Où est installé un bijou quand:

  1. Je viens de Rubygems (sans RVM ou Bundler)?
  2. Rubygems et RVM sont installés?
  3. Rubygems, RVM et Bundler sont installés?

S'il vous plaît, aidez-moi à comprendre ce truc avec des ressources sur le Web ou par vos réponses détaillées.

64
Anand
  1. Pour savoir où les gemmes sont installées, exécutez echo $GEM_HOME dans un terminal.
  2. Lorsque vous utilisez RVM, des gemmes sont installées dans votre installation RVM car elle change $ GEM_HOME. Fonctionnement echo $GEM_HOME afficherait maintenant un chemin d'accès à votre installation RVM.
  3. Lorsque Bundler est ajouté au mix, les gemmes seront installées dans $GEM_HOME, ou, si vous spécifiez un chemin lors de l'exécution de bundle install sera installé sur ce chemin. Pour savoir où se trouve une gemme via Bundler, vous pouvez utiliser bundle show gemname pour obtenir son chemin complet.
38
idlefingers

Utilisation gem env pour lister les chemins des gemmes dans chaque contexte.

Sans RVM gem env indiquera les chemins d'accès à la bibliothèque de gemmes système.

Avec RVM gem env signalera les chemins de bibliothèque de gemmes gérés par RVM.

Bundler gère les dépendances des applications et les installe dans la bibliothèque de gemmes de votre environnement. Si vous utilisez RVM + Bundler, les gemmes seront installées dans les répertoires de gemmes gérés RVM. Si vous l'utilisez sans RVM, bundler installera des gemmes dans les répertoires de gemmes du système.

4
Aditya Sanghi

J'essaie également de comprendre comment cela fonctionne. Le blog " Conseils sur l'utilisation de Ruby, RVM, Passenger, Rails, Bundler,… en développement " m'a aidé à avoir une meilleure vue d'ensemble.

BTW, c'est une traduction d'un article français, la version française est meilleure.

0
pgras

Pour trouver le chemin où une gemme est installée, utilisez:

gem which gem_name

Pour trouver des exécutables (comme html2haml), utilisez:

which executable_name

Pour éviter de taper bundle exec html2haml qui est recommandé par l'équipe Bundler, utilisez mon rubygems-bundler gem.

0
mpapis