2010-03-05 19 views
39

Come funziona "gem install"? Non è intuitivo ...Come installare un file gemma Ruby scaricato?

mio gioiello è davvero qui:

[[email protected] Téléchargement]# ll *.gem 
-rw-rw-r-- 1 jean jean 16353818 mar 5 11:39 ruby-processing-1.0.9.gem 

Ma "install gioiello" un idiomatica non vederlo ...

[[email protected] Téléchargement]# gem install ruby-processing-1.0.9.gem 
ERROR: could not find gem ruby-processing-1.0.9.gem locally or in a repository 

Cosa c'è di sbagliato in questo?

risposta

47

Forse non ho capito completamente la domanda. Ma se vuoi installare una gemma che hai sul tuo computer locale, tutto quello che devi fare dalla console è andare nella directory che contiene il tuo gioiello e gem install --local your.gem.

12

Il problema è che installazione gemma è in cerca di gemme da installare nella sua directory predefinita. È possibile scoprire dove cioè eseguendo:

$ gem environment 

Questo vi darà qualcosa di simile:

> RubyGems Environment: 
> - RUBYGEMS VERSION: 1.3.6 
> - RUBY VERSION: 1.8.6 (2007-09-24 patchlevel 111) [i486-linux] 
> - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8 
> - RUBY EXECUTABLE: /usr/bin/ruby1.8 
> - EXECUTABLE DIRECTORY: /usr/bin 
> - RUBYGEMS PLATFORMS: 
>  - ruby 
>  - x86-linux 
> - GEM PATHS: 
>  - /usr/lib/ruby/gems/1.8 
>  - /home/adminuser/.gem/ruby/1.8 

I GEM SENTIERI posizioni è dove installare gemma si aspetta di trovare le gemme da installare . Quindi, la soluzione al vostro problema sarebbe quello di copiare la gemma dalla posizione corrente alla directory previsto, vale a dire

$ cp my.gem /home/adminuser/.gem/ruby/1.8/ 

Se quindi si esegue gem install che preleverà il gioiello e installarlo. Assicurarsi di eseguire il comando copia come superutente (sudo, se si sta eseguendo Ubuntu come me)

PS Se, quando si esegue $ ambiente gemma, si ottiene un " 'manage_gems' metodo non definito per Gem : Module (NoMethodError)" l'errore, quindi modificare /usr/bin/gemma e garantire che le prime tre righe del file simile a questa:

  1. require 'rubygems'
  2. require 'RubyGems/gem_runner '
  3. Gem.manage_gems

+0

Sto cercando di installare un gioiello dai sorgenti, come avrei fatto? Preferibilmente con un link simbolico in modo da poter aggiornare la fonte. – Pepijn

+0

Grazie per questo. Ho bisogno di installare l'adattatore Oracle e ho dovuto farlo dal file .gem come l'origine non è più disponibile. – Eric

23

Solo qualche altro chiarimento nel caso in cui sia necessario creare/installare il proprio file gem in questo esempio foo-bar.

gem build foo-bar.gemspec 
gem install --local foo-bar-0.1.0.gem 

ero alla ricerca di come fare questo e questo post è stato primo risultato :)

+0

Grazie. La seconda riga dovrebbe essere probabilmente corretta in: gem install --local foo-bar-1.0.0.gem – valk

+1

@valk bene dipende dalla versione specificata in '* .gemspec'. Vale la pena ricordare che non è necessario l'handle '--local' ma la documentazione dice che lo fa, l'ho rispettato. –

+0

@HarisKrajina È utile avere '--local' perché impedisce di controllare ciascuna fonte per il repository e risparmiare un po 'di tempo. Particolarmente utile se hai modificato un gioiello trovato online (questo per renderlo compatibile con un altro programma). – wolfcall

Problemi correlati