3

gemをインストールしましたが、次のエラーが発生します

/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

また、このエラーはにのみ固有でRuby 1.8.7あり、Jruby同じファイルがで機能し1.9.2ます。何が壊れているのでしょうか?

rbing.rbファイルは次のようになります

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

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

1 に答える 1

1

Ruby 1.8 では、カレント ディレクトリはロード パスにあります。と言うとrequire 'rbing'、rbing gem を使用する代わりに、Ruby は現在のディレクトリを調べて、rbing.rb というファイル (現在のファイル) を確認し、それをリロードします。したがって、 への参照にヒットするとRBing、Ruby は何をすべきかわかりません。(もちろん、JRuby でも同じことが起こりますが、これは使用しているバージョンに依存する可能性があります。) 現在のディレクトリがロード パスにないため、Ruby 1.9 ではこのエラーは発生しません。したがって、Ruby は現在のファイルをスキップし、 rbing gem が必要です。

これを確認するには、ファイルの先頭に次の行を配置します。

puts "#{__FILE__} was required"

1.9未満では、これは言うべきです

rbing.rb was required

1.8およびJRubyの下では、これは次のようになります

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

(そして で失敗しuninitialized constant RBingます)。

tl;dr:ファイルに別の名前を付けてください。

于 2012-04-09T21:41:31.073 に答える