虽然我安装了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.7Jruby同一个文件。什么可能会坏?
rbing.rb文件如下所示
require 'rubygems'
require 'rbing'
bing = RBing.new("APPID")

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

最佳答案

在Ruby1.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:把你的文件命名为别的。

09-05 20:15