2010-05-31 15 views
10

ichIch sehe Juwel in „Juwel Liste“, aber haben

auf Ubuntu10 bin „keine solche Datei laden“
sudo apt-get install ruby1.9.1-full 

dann herunterladen Quellen rubygem 1.3.7 und installieren Sie es

sudo ruby setup.rb 

dann zum Beispiel installieren sinatra

sudo gem install sinatra 

Schließlich offen irb und Typ

require "rubygems" 
require "sinatra" 

und erhalten Fehler

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

Können Sie genauer sein? In welchem ​​Zusammenhang können Sie die Fehler zitieren? Versuchen Sie, neu zu installieren und ausführliche Informationen zu übergeben, um zu sehen, was passiert. – Jay

+4

Diese Frage wurde in einem Lehrbuch hervorgehoben, das ich gerade verwende (http://beta.saasbook.info/). Bereiten Sie sich darauf vor, bald das Abzeichen "Popular Question" zu erhalten. –

+4

Hier kam nach dem Lesen Engineering Long Lasting Software (SaaS-Buch) – coder9

Antwort

4

mit Ich hatte genau dieses Problem. Das Problem ist, dass Edelstein und Rubin nicht übereinstimmen, wo die Edelsteine ​​leben. Vergleichen Sie diese:

ruby -e "puts Gem.path" 

gem env 

gem which sinatra 

Wenn Sie wie mein Setup sind, dann werden Sie feststellen, dass es einen Eintrag im Wege gem env ist, die nicht in Gem.path ist, und das ist genau, wo sinatra behaupten zu sein. In meinem Fall musste ich hinzufügen

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

zu meinem .profil. Dann waren alle glücklich.

2

ich diesen Fehler in der Regel schlagen, wenn ich es vergesse:

require 'rubygems' 

Es nützlich sein würden, wenn Sie den eigentlichen Code Probe zur Verfügung gestellt, obwohl, was Juwel Sie wollen zu verlangen, und welche Ruby-Version Sie verwenden, wenn dies das Problem nicht löst.

+1

ab 1.9 müssen Sie keine Rubygems –

+0

@Isaac Cambron - das ist wahr, weshalb ich für weitere Details gefragt. Das OP hat sie seitdem zur Verfügung gestellt. Die Antwort ist eindeutig nicht relevant für diesen bestimmten Benutzer an dieser Stelle, aber ich lasse es als Referenz :) – Matchu

1

Dies war vor hier auf SO ziemlich oft. Problem ist, dass Sie wahrscheinlich zwei Versionen von Ruby haben. Der eine installiert den Edelstein und der andere versucht ihn zu benutzen. Tun Sie dies in Terminal:

$ which -a ruby 

Oder diese:

$ which -a gem 

, um zu sehen, wenn Sie mehr als eine Version von Rubin/gem installiert. Wenn ja - entfernen Sie eine Version (über $ rm oder Paketmanager Ihres Systems).

+0

Ich habe einen Rubin und ein Juwel :) –

3

Execute

sudo gem install sinatra --verbose 

und den Pfad beachten Sie, wo das Juwel installiert zu werden.

Dann versuchen Sie diese in irb

puts $LOAD_PATH 

und stellen Sie sicher, dass Juwel in einem der Verzeichnisse in $LOAD_PATH

installiert ist, und im Idealfall beginnen gerade http://rvm.beginrescueend.com/

+0

+1 Ich denke, es ist einfacher, die Reihe von Verzeichnissen anzupassen der Lastweg (wie in meiner Antwort), aber das wird auch funktionieren. –

+0

rvm verwirrt mich –

0

Ich verwende Ruby Gems 1.8.7 für ein Projekt. Ich habe den gleichen Fehler bekommen. Verwenden Sie die Zeile require 'rubygems'. Es muss immer die erste require-Anweisung sein, sonst kann ein Fehler auftreten.In meinem Code, ich hatte

require 'watir' 
require 'rubygems' 
# more code 

ich den Fehler bekam - in `require ': keine solche Datei zu laden - watir (Loaderror). Als ich Rubygems zuerst gesetzt habe, ging der Fehler weg und alles hat funktioniert. Ich weiß nicht, warum das passiert.

Btw, versuchte ich user24359 Antwort und es hat mir nicht geholfen.

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