2012-04-09 3 views
3

Obwohl ich gem installiert bekomme ich Fehler folgendencustom_require.rb: 36: in `gem_original_require‘

/rbing.rb:4: uninitialized constant RBing (NameError) 
from /Users/bhushan/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require' 
from /Users/bhushan/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require' 
from rbing.rb:3 

Und diese Fehler sind spezifisch für nur Ruby 1.8.7 und Jruby gleiche Datei arbeitet auf 1.9.2. Was könnte gebrochen sein?

rbing.rb Datei sieht wie folgt aus

require 'rubygems' 
require 'rbing' 
bing = RBing.new("APPID") 

rsp = bing.web('infosys', :site => "linkedin.com") 
puts rsp.web.results[0].url 
+0

Können Sie den Inhalt von rbing.rb teilen? –

+0

sicher. Ich habe meine Frage oben aktualisiert. –

+0

Welchen Patch benutzen Sie, weil es für mich arbeitet. https://gist.github.com/2342058 – ericraio

Antwort

1

In Ruby 1.8, das aktuelle Verzeichnis im Lastpfad ist. Wenn du also require 'rbing' sagst, wird Ruby im aktuellen Verzeichnis nachschauen, statt rbing gem zu suchen, eine Datei namens rbing.rb (die aktuelle Datei) sehen und sie neu laden. Daher weiß Ruby, wenn es den Verweis auf RBing trifft, nicht, was zu tun ist, weil es nie definiert wurde. (Offensichtlich passiert das Gleiche für JRuby, obwohl dies von der verwendeten Version abhängen kann.) Sie sehen diesen Fehler in Ruby 1.9 nicht, weil das aktuelle Verzeichnis nicht im Ladepfad ist, deshalb überspringt Ruby die aktuelle Datei und benötige den rbing gem.

Sie können dies bestätigen, indem Sie diese Zeile am Anfang der Datei platzieren:

puts "#{__FILE__} was required" 

unter 1,9, die

rbing.rb was required 

Under 1.8 und JRuby sagen sollte, sollte dies sagen

rbing.rb was required 
./rbing.rb was required 

(und dann mit uninitialized constant RBing fehlschlagen).

tl; dr: Benennen Sie Ihre Datei etwas anderes.

+0

thans mann. Stunden davon gerettet, dass ich darauf bohre. –

Verwandte Themen