2010-05-31 12 views
10

Sono in Ubuntu10Vedo gioiello nella "lista gioiello", ma hanno "No such file da caricare"

sudo apt-get install ruby1.9.1-full 

poi scaricare i sorgenti di rubygem 1.3.7 e installarla

sudo ruby setup.rb 

poi , ad esempio, installare sinatra

sudo gem install sinatra 

Infine aperta irb e tipo

require "rubygems" 
require "sinatra" 

e ottenere errore

LoadError: no such file to load -- sinatra 
    from (irb):2:in `require' 
    from (irb):2 
    from /usr/bin/irb:12:in `<main>' 
+0

Potete essere più specifici? In che contesto e puoi citare gli errori? Prova a reinstallare e passando verbose per vedere cosa sta succedendo. – Jay

+4

Questa domanda è stata evidenziata in un libro di testo attualmente in uso (http://beta.saasbook.info/). Preparati a ricevere presto il badge "domanda popolare". –

+4

È venuto qui dopo aver letto il software di lunga durata di ingegneria (libro SaaS) – coder9

risposta

4

Ho avuto esattamente questo problema. Il problema è che gemma e rubino non sono d'accordo su dove vivono le gemme. Confronta questi:

ruby -e "puts Gem.path" 

gem env 

gem which sinatra 

Se siete come la mia messa a punto, si noterà che c'è una voce in percorsi gemma di ENV che non è in Gem.path, e questo è esattamente dove Sinatra sarà pretende di essere. Nel mio caso, ho dovuto aggiungere

export GEM_HOME=/usr/lib/ruby/gems/1.9.1 

al mio .profile. Quindi tutti erano felici.

2

Io di solito ha colpito questo errore quando mi dimentico:

require 'rubygems' 

Sarebbe utile se hai fornito il codice di esempio vero e proprio, però, che cosa si vuole gemma da richiedere, e quale versione di Ruby stai usando se questo non risolve il problema.

+1

a partire da 1.9 non è necessario richiedere rubygems –

+0

@Isaac Cambron - questo è vero, motivo per cui ho chiesto maggiori dettagli. Da allora l'OP li ha forniti. La risposta chiaramente non è rilevante per questo particolare utente a questo punto, ma lo lascerò per riferimento :) – Matchu

1

Questo era prima qui su SO parecchie volte. Il problema è che probabilmente hai due versioni di ruby. Quello sta installando la gemma e l'altra sta cercando di usarla. Fate questo in terminale:

$ which -a ruby 

O questo:

$ which -a gem 

per vedere se si dispone di più di una versione di Ruby/gemma installato. In tal caso, rimuovere una versione (tramite $ rm o il gestore pacchetti del sistema).

+0

ho un rubino e una gemma :) –

3

Esegui

sudo gem install sinatra --verbose 

e notare il percorso in cui è sempre installato la gemma.

Quindi provare questo IRB

puts $LOAD_PATH 

e assicurarsi che gioiello è installato in una delle directory in $LOAD_PATH

e, idealmente, solo iniziare a utilizzare http://rvm.beginrescueend.com/

+0

+1 Penso che sia più facile regolare il set di directory in il percorso di caricamento (come nella mia risposta), ma chiaramente funzionerà anche questo. –

+0

rvm mi ha confuso –

0

Io uso gemme di rubino 1.8.7 per un progetto. Stavo ottenendo lo stesso errore. Usa la linea require 'rubygems'. Deve sempre essere la prima richiesta, altrimenti è possibile ottenere un errore.Nel mio codice, ho avuto

require 'watir' 
require 'rubygems' 
# more code 

ho ottenuto l'errore - in `require ': Nessun file da caricare - watir (LoadError). Quando ho inserito i rubygems per primo, l'errore è andato via e tutto ha funzionato. Non so perché questo accade.

Btw, ho provato la risposta utente24359 e non mi ha aiutato.

C:\code>ruby -e "puts Gem.path" 
-e:1: uninitialized constant Gem (NameError) 
Problemi correlati