2010-11-20 13 views
11

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:¿Dónde están las GEM cuando Ruby compiló manualmente en Mac OS X 10.6.8?

  • ¿Cuál es el "viejo" camino de la gema, donde gem install sinatra pone la gema del 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?

Respuesta

3

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

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

Ok, ¿cómo puedo migrar esas gemas o decirle a Ruby que use la ruta anterior? – MrB

+0

En realidad, están en tres ubicaciones. Ver mi respuesta para los valores predeterminados. –

+0

@MrB Muchas gemas de 1.8 deberían reinstalarse en 1.9. – Phrogz

32

Typing gem env (Uso del comando de la gema de su edad Rubí instalar) en un símbolo 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 ... Imagino que Snow Leopard tendrá un formato similar)

El campo GEM PATHS es el int algo que está 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. Solo debe poder llamar al gem install *gemname* en cada uno de esos archivos gema (usando su nuevo Ruby install's gem command).

EDITAR: Erróneamente remitido 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.

+0

No estoy seguro del comportamiento de Rubygem para las dependencias cuando se instala desde un archivo .gem local. Es posible que desee incluir el indicador --ignorar-dependencias para evitar desconectar dependencias de una fuente remota (ya que presumiblemente ya tiene todas las dependencias necesarias localmente). –

+1

La configuración de Windows Gem no es lo mismo que Snow Leopard, porque Apple configura las ubicaciones predeterminadas y desea sus propias gemas, además de las gemas de usuario, además de las gemas 'sudo' del usuario. Microsoft no incluye a Ruby, por lo que es el instalador de Ruby para Windows el que determina las ubicaciones. –

+0

@Greg: independientemente de quién determine las ubicaciones de instalación, ¿Rubygems no sabe dónde está esa ubicación? Disculpas si estoy fuera de mi dominio del conocimiento aquí; Supuse que Rubygems funcionaría igual en todos los SO compatibles. –

7

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 su which ruby muestra /usr/bin/ruby, sus entornos gema debe ser similar 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 utiliza RVM que podría ser capaz de decir que a copy your gems del system gemset 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 origen.

Tengo curiosidad ¿POR se construirían de forma manual, cuando RVM está disponible para manejar todo el configuration and installation, y retirar en gran medida cualquier preocupación acerca donde están las cosas y si usted acaba de pisotearon versión instalada del sistema .

Cuando RVM haya instalado una versión de Ruby, estará en ~/.rvm y sus gemas estarán muy bien ubicadas allí también. Podrá manage the gems como gemsets, 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 anterior gem env que las gemas se encuentran en tres áreas separadas en el disco. Bajo el control de RVM que están en zona de pruebas de RVM:

- GEM PATHS: 
    - /Users/greg/.rvm/gems/ruby-1.9.2-p0 
    - /Users/greg/.rvm/gems/[email protected] 

Eso hace que sea trivial para mí que los respalde, o un golpe a la basura si quiero.

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

Cuestiones relacionadas