ruby on rails - Rubygems, Bundler y confusión RVM
ruby-on-rails (4)
- Para saber dónde se están instalando las gemas, ejecute
echo $GEM_HOME
en una terminal. - Al usar RVM, las gemas se instalan en su instalación de RVM, ya que cambia $ GEM_HOME. Ejecutando
echo $GEM_HOME
ahora mostraría una ruta en su instalación de RVM. - Cuando se agrega Bundler a la mezcla, las gemas se instalarán en
$GEM_HOME
o, si especifica una ruta al ejecutar elbundle install
instalación en esa ruta. Para saber dónde está una gema a través de Bundler, puedes usarbundle show gemname
para obtener su ruta completa.
Leí " Relaciones entre Rubygems, Bundler y RVM " antes de volver a preguntar.
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 aisladamente.
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 dividir en estas preguntas. Dónde se instala una gema cuando:
- Solo tengo Rubygems (sin RVM o Bundler)?
- Rubygems y RVM están instalados?
- Rubygems, RVM y Bundler están instalados?
Ayúdame a entender esto con recursos en la web o con tus respuestas detalladas.
Para encontrar la ruta donde está instalada una gema, use:
gem which gem_name
Para encontrar ejecutables (como html2haml) use:
which executable_name
Para evitar escribir bundle exec html2haml
recomendado por el equipo de rubygems-bundler , use mi gema rubygems-bundler .
También estoy tratando de entender cómo funciona. El blog " Consejos sobre el uso de Ruby, RVM, Passenger, Rails, Bundler, ... en desarrollo " me ayudó a tener una mejor visión general.
Por cierto, es una traducción de un artículo francés, la versión en francés es mejor.
Usa gem env
para enumerar las rutas de las gemas 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.