2010-11-20 3 views
11

Ho costruito manualmente Ruby 1.9.2 su Snow Leopard. Ora non riesco a trovare i miei vecchi file GEM. Immagino che siano in un percorso diverso ora o qualcosa del genere. Quindi ho tre domande:Dove sono i GEM quando Ruby è compilato manualmente in Mac OS X 10.6.8?

  • Qual è il "vecchio" percorso della gemma, dove gem install sinatra mette la gemma di sinatra?
  • Qual è il "nuovo" percorso gemma, che viene impostato quando costruisco Ruby manualmente?
  • Come posso cambiarlo in modo che Ruby trovi di nuovo le mie gemme?

risposta

3

Credo che la gemma standard di percorso di installazione su OS X è:

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

Ok, come posso migrare quelle gemme o dire a Ruby di usare il vecchio percorso? – MrB

+0

In realtà sono in tre posizioni. Vedi la mia risposta per le impostazioni predefinite. –

+0

@MrB Molte gemme da 1.8 devono essere reinstallate alla versione 1.9. – Phrogz

32

Digitando gem env (Utilizzando il comando gemma del tuo vecchio Rubino installare) al prompt dei comandi dà qualcosa di simile 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/ 

(Su Windows ... Immagino che Snow Leopard abbia un formato simile)

Il campo GEM PATHS è l'int cosa erestante qui. Se vai a quelle directory elencate, dovresti vedere una cartella denominata cache. Ciò conterrà un elenco di file .gem corrispondenti a tutte le gemme installate in quella specifica directory. Dovresti solo essere in grado di chiamare gem install *gemname* su ciascuno di questi file gemma (usando il tuo comando gemma ruby ​​install).

MODIFICA: erroneamente indicato in DIRECTORY DI INSTALLAZIONE anziché in GEM PATHS. Greg mi ha ricordato che ci sono più sedi conosciute da una specifica installazione di Rubygems. Tutte queste posizioni devono essere controllate per le gemme utilizzate da quell'installazione di Ruby.

+0

Non sono sicuro del comportamento di Rubygem per le dipendenze durante l'installazione da un file .gem locale. Potresti voler includere il flag --ignore-dependencies per evitare di tirare le dipendenze da una fonte remota (poiché presumibilmente hai già tutte le dipendenze necessarie localmente). –

+1

La configurazione di Windows Gem non è la stessa di Snow Leopard, perché Apple configura le posizioni predefinite e desidera le proprie gemme, oltre alle gemme utente, oltre alle gemme utente sudo'. Microsoft non include Ruby quindi è il programma di installazione di Ruby per Windows che determina le posizioni. –

+0

@Greg: indipendentemente da chi determina le posizioni di installazione, Rubygems non sa dove si trova? Mi scuso se sono al di fuori del mio regno della conoscenza qui; Ho pensato che Rubygems avrebbe funzionato allo stesso modo su tutti i sistemi operativi supportati. –

7

Le tue "vecchie" gemme sarebbero relative al Ruby fornito in dotazione con il Mac perché il comando gem è incluso in Ruby 1.8.7, che è disponibile su Snow Leopard. Se il vostro which ruby mostra /usr/bin/ruby, gli ambienti gemma dovrebbe essere simile 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 

Se si utilizza RVM si potrebbe essere in grado di dire a copy your gems dal system GemSET a uno sotto il controllo di RVM. Non ho provato a farlo mentre installo RVM immediatamente e gli permetto di gestire tutta l'installazione di Ruby e poi ignoro l'installazione del sistema.

Se il vostro which ruby mostra /usr/local/bin/ruby allora il comando gem env dovrebbe riflettere il percorso modificato per la versione compilata dall'origine.

Sono curioso PERCHE si avrebbero costruito manualmente, quando RVM è disponibile per gestire tutta la configuration and installation, e rimuovere gran parte tutte le preoccupazioni circa dove le cose sono e se hai appena calpestato sulla versione installata del sistema .

Quando RVM ha installato una versione Ruby, sarà tutto in ~/.rvm e le gemme saranno ben posizionate anche lì. Sarai in grado di manage the gems come gemsets, relativo a ciascuna versione di Ruby, e di passare avanti e indietro all'istante.Oppure, ancora meglio, puoi eseguire un comando/programma in ogni versione di Ruby che hai installato per testarli usando rvm ruby 'some command'.

Si noti nell'output gem env di cui sopra che le gemme si trovano in tre aree separate sul disco. Sotto il controllo di RVM sono nella sandbox di RVM:

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

che lo rende banale per me di farne un backup, o soffiare via se voglio.

Ho usato per compilare i miei rubini dal sorgente sulle mie macchine Mac e Linux. Ora uso RVM per quello. È molto meglio che farlo a mano.