pristine installed how gems create ruby path gem

installed - ruby gem bundle



¿Dónde están los GEM cuando Ruby compiló manualmente en Mac OS X 10.6.8? (3)

Construí manualmente Ruby 1.9.2 en Snow Leopard. Ahora no puedo encontrar mis viejos archivos GEM. Supongo que ahora están en un camino diferente o algo así. Entonces tengo tres preguntas:

  • ¿Cuál es el "viejo" camino de la gema, donde la gem install sinatra pone la gema sinatra?
  • ¿Cuál es la "nueva" ruta de la gema, que se establece cuando construyo Ruby manualmente?
  • ¿Cómo lo cambio para que Ruby encuentre mis gemas nuevamente?

Creo que la ruta de instalación de gema estándar en OS X es:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/


Tus gemas "antiguas" serían relativas al Ruby que venía incluido con el Mac porque el comando gem está incluido con Ruby 1.8.7, que es stock en Snow Leopard. Si tu which ruby muestra /usr/bin/ruby , tus entornos de gemas deberían ser similares a:

- GEM PATHS: - /Library/Ruby/Gems/1.8 - /Users/greg/.gem/ruby/1.8 - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8

Si está utilizando RVM, podría decirle que copie sus gemas desde el gemset del system a uno bajo el control de RVM. No he intentado hacer eso cuando instalé RVM inmediatamente y dejo que maneje toda mi instalación de Ruby y luego ignoro la instalación del sistema.

Si su which ruby muestra /usr/local/bin/ruby entonces el comando gem env debe reflejar la ruta modificada para la versión compilada desde el código fuente.

Tengo curiosidad POR QUÉ construirlo manualmente, cuando RVM está disponible para manejar toda la configuración e instalación , y en gran medida eliminar cualquier preocupación sobre dónde están las cosas y si acaba de pisar fuerte en la versión instalada del sistema.

Cuando RVM haya instalado una versión de Ruby, estará en ~/.rvm y sus gemas también estarán muy bien ubicadas allí. Podrás administrar las gemas como gemas , en relación con cada versión de Ruby, y alternar instantáneamente. O, mejor aún, puede ejecutar un comando / programa en cada versión de Ruby que haya instalado para probarlos usando rvm ruby ''some command'' .

Observe en la salida de gem env anterior que las gemas están en tres áreas separadas en el disco. Bajo el control de RVM están en la caja de arena de RVM:

- GEM PATHS: - /Users/greg/.rvm/gems/ruby-1.9.2-p0 - /Users/greg/.rvm/gems/ruby-1.9.2-p0@global

Eso hace que sea trivial para mí respaldarlos, o volarlos si quiero.

Solía ​​compilar mis rubies desde el código fuente en mis cajas Macs y Linux. Yo uso RVM para eso ahora. Es mucho mejor que hacerlo a mano.


Escribir gem env (usando su antiguo comando gema Ruby install) en el símbolo del sistema da algo similar a:

> RubyGems Environment: > - RUBYGEMS VERSION: 1.3.6 > - RUBY VERSION: 1.9.1 (2009-07-16 patchlevel 243) [i386-mingw32] > - INSTALLATION DIRECTORY: C:/Ruby19/lib/ruby/gems/1.9.1 > - RUBY EXECUTABLE: C:/Ruby19/bin/ruby.exe > - EXECUTABLE DIRECTORY: C:/Ruby19/bin > - RUBYGEMS PLATFORMS: > - ruby > - x86-mingw32 > - GEM PATHS: > - C:/Ruby19/lib/ruby/gems/1.9.1 > - C:/Users/Username/.gem/ruby/1.9.1 > - GEM CONFIGURATION: > - :update_sources => true > - :verbose => true > - :benchmark => false > - :backtrace => false > - :bulk_threshold => 1000 > - REMOTE SOURCES: > - http://rubygems.org/

(En Windows ... me imagino que Snow Leopard tendrá un formato similar)

El campo GEM PATHS es lo interesante aquí. Si va a los directorios enumerados, debería ver una carpeta llamada caché . Eso contendrá una lista de archivos .gem correspondientes a todas las gemas instaladas en ese directorio específico. Deberías poder llamar a gem install *gemname* en cada uno de esos archivos gem (usando tu nuevo comando Ruby install''s gem).

EDITAR: erróneamente referido a DIRECTORIO DE INSTALACIÓN en lugar de GEM PATHS. Greg me recordó que hay varias ubicaciones conocidas por una instalación específica de Rubygems. Todos esos lugares deben verificarse para saber si hay gemas usadas por esa instalación de Ruby.