¿Por qué se instalan las gems en un directorio con una versión de Ruby diferente a la que estoy ejecutando?

Cuando instalo una gem, se instala en un directorio llamado 1.9.1, a pesar de que no es la versión de Ruby que he instalado:

$ ruby -v ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0] $ gem which rails .../ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails.rb 

¿Por qué pasó esto? No tengo otras versiones de Ruby instaladas (y ciertamente no v1.9.1).

Tenga en cuenta que lo siguiente es también para todas las versiones posteriores de Ruby a partir de este escrito, no solo 1.9.2.


Según el anuncio de lanzamiento 1.9.2 :

La biblioteca estándar está instalada en /usr/local/lib/ruby/1.9.1

Esta versión es una “versión compatible con la biblioteca”. Ruby 1.9.2 es casi 1.9.1 compatible, por lo que la biblioteca está instalada en el directorio 1.9.1.

Aunque está instalado en un directorio de numeración diferente, está utilizando 1.9.2. RubyGems puede mostrar todos los directorios que está utilizando a través de gem env .

Esto garantiza que un conjunto de gems instaladas solo se utilice con versiones con las que realmente puedan ejecutarse (especialmente debido a las extensiones C comstackdas), y que al actualizar a una versión más nueva, pero “compatible con la biblioteca”, no sea necesario. reinstalar todas las gems.

Creo que es porque comparten la misma biblioteca estándar.

Hubo algunas mejoras significativas en el núcleo 1.9.2, pero no creo que haya cambiado nada en la biblioteca estándar, por lo que comparten el mismo camino. No es nada de qué preocuparse, sin embargo, como dijiste, todo está funcionando bien.