2012-06-04 19 views
7

Por lo tanto, he creado un gemset de rvm para cada uno de mis proyectos de rieles. Ambos usan la misma versión de ruby ​​1.9.3.¿Por qué RVM instala gemas duplicadas para diferentes gemas?

Esto hace que bundle install instale por completo un nuevo conjunto de gemas para ambos proyectos. No importa si el otro proyecto tiene la misma versión exacta de la gema instalada en el otro gemset. Supongo que este es el comportamiento esperado para mí, pero parece ser un uso ineficiente del espacio en el disco duro y el ancho de banda.

Sé que podría mover manualmente algunas de esas gemas a un gemset global, pero eso me parece tedioso y también propenso a romperse si mis dependencias cambian para un proyecto en particular.

¿Hay una mejor manera de organizar las cosas, o tiene rvm detectar automáticamente cuando una versión gema ya está instalada y simplemente usar esa copia?

¿O hay una mejor alternativa a RVM que debería estar utilizando.

Respuesta

5

Esto es por diseño. Los conjuntos de genes le permiten aislar completamente las bibliotecas utilizadas para que no tenga ninguna interacción accidental entre proyectos. Si no es necesario el aislamiento sólo se puede usar un intérprete sin gemset:

rvm use 1.9.3 

Si hay algunas joyas que utiliza en todos los proyectos, simplemente cambiar a la gemset global para el intérprete:

rvm use [email protected] 

gem install las gemas comunes y entonces no serán reinstalados por proyecto más cuando estás en una gemset.

Si bien los conjuntos de gemas definitivamente no son eficientes en términos de ancho de banda o espacio en HD, son extremadamente útiles porque puede borrar fácilmente todas las dependencias de un proyecto y volver a bundle desde cero en cualquier momento que desee. También eliminan por completo las versiones accidentalmente cambiantes de sus dependencias. Si no te gustan los conjuntos de joyas, especificar correctamente las versiones en tu Gemfile puede llevarte bastante lejos sin ellos.

En cuanto a las alternativas, rbenv es la principal que echaría un vistazo.

Cuestiones relacionadas