2011-01-05 24 views
63

He leído "Relationships between Rubygems, Bundler, and RVM" antes de volver a preguntar.Rubygems, Bundler y confusión RVM

Bueno, hay muchas preguntas como esta, pero las personas que respondieron dicen que trabajan con Rubygems, RVM y Bundler, y no han explicado cómo funcionan cada una de ellas de forma aislada.

Estoy realmente confundido con cómo los tres trabajan de forma aislada cuando estamos instalando gemas. Por favor, no me digas cómo trabajas, lo que me ayudará, pero no sabré lo que sucede cuando jugamos con ellos.

Mi confusión se puede desglosar en estas preguntas. Dónde se encuentra una gema instalada cuando:

  1. Acabo de recibir Rubygems (sin RVM o Bundler)?
  2. Rubygems y RVM están instalados?
  3. Rubygems, RVM y Bundler están instalados?

Ayúdenme a entender esto con recursos en la web o con sus respuestas detalladas.

Respuesta

38
  1. Para saber dónde se están instalando las gemas, ejecute echo $GEM_HOME en un terminal.
  2. Al usar RVM, las gemas se instalan en su instalación de RVM cuando cambia $ GEM_HOME. Ejecutando echo $GEM_HOME ahora mostraría una ruta en su instalación RVM.
  3. Cuando se agrega Bundler a la mezcla, las gemas se instalarán en $GEM_HOME o, si especifica una ruta al ejecutar, se instalará bundle install en esa ruta. Para saber dónde está una gema a través de Bundler, puede usar bundle show gemname para obtener su ruta completa.
+7

fyi para # 2 ejecutando 'rvm info' también es útil: imprime todo el entorno ruby ​​+ rubygems que está actualmente en uso. – ffoeg

4

Usa gem env para enumerar las rutas de la gema en cada contexto.

Sin RVM gem env informará las rutas de la biblioteca de gemas del sistema.

Con RVM gem env informará las rutas de la biblioteca de gemas administradas por RVM.

Bundler administra dependencias de aplicaciones e instala en la biblioteca de gemas en su entorno. Si está utilizando RVM + Bundler, las gemas se instalarán en los directorios de gemas administradas RVM. Si lo está utilizando sin RVM, bundler instalará gemas en los directorios gema del sistema.

0

Para encontrar la ruta en la que una gema está instalada uso:

gem which gem_name 

Para encontrar ejecutables (como html2haml) utilizar:

which executable_name 

Para evitar tener que escribir bundle exec html2haml que es recomendado por el equipo Bündler, usa mi gema rubygems-bundler.

Cuestiones relacionadas