ruby - custom_require.rb :36: in `gem_original_require'

标签 ruby ruby-on-rails-3 rubygems jruby

虽然我安装了 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 同一文件适用于 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

最佳答案

在 Ruby 1.8 中,当前目录在加载路径中。因此,当您说 require 'rbing' 时,Ruby 不会使用 rbing gem,而是会在当前目录中查找名为 rbing.rb 的文件(这是当前文件),然后重新加载它。因此,当它遇到对 RBing 的引用时,Ruby 不知道该怎么做,因为它从未被定义过。 (显然 JRuby 会发生同样的事情,尽管这可能取决于您使用的版本。)您在 Ruby 1.9 中没有看到此错误,因为当前目录不在加载路径中,因此 Ruby 将跳过当前文件并需要戒指 gem 。

您可以通过将此行放在文件顶部来确认这一点:

puts "#{__FILE__} was required"

1.9下,应该是这样的

rbing.rb was required

在1.8和JRuby下,应该这样说

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

(然后失败并显示未初始化的常量 RBing)。

tl;dr:将您的文件命名为其他名称。

关于ruby - custom_require.rb :36: in `gem_original_require' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10069516/

相关文章:

ruby-on-rails - 确保 `gem install pg -v ' 0.18。 4'` 捆绑前成功

ruby-on-rails - Ruby on Rails - 搜索功能不在一列上返回结果

ruby - HTTP url 在 selenium 测试运行时重定向为 HTTPS

ruby-on-rails - ruby rails : before_save fields to lowercase

python - python 是否有像 gem 这样的 ruby​​ 安装程序,可以让你从命令行安装模块,即使它们不在你的机器上?

ruby-on-rails - `add_frozen_gem_path' : undefined method `source_index' for Gem:Module (NoMethodError) OR Gem. source_index 已弃用

ruby-on-rails - 如何加快我的 Ruby/Rake 任务,该任务计算 300K 日期字符串中日期的出现次数?

ruby-on-rails-3 - redis 欧姆性能慢

ruby-on-rails - Ruby 的 Mix-in 链接无法正常工作

ruby-on-rails - Factory-girl 创建绕过我的模型验证