为什么 Rails 找不到我安装的 gem?

Why isn't Rails able to find my installed gem?

我正在使用 Dropbox SDK 并将 gem 'dropbox-sdk','~> 1.6.4' 包含在我的 Gemfile 中,并且我 运行 bundle install。我已经验证它是由 运行ning bundle show dropbox-sdk 安装的,显示它已安装在 /Users/Chris/.rvm/gems/ruby-2.2.0@rails4.2/gems/dropbox-sdk-1.6.4 中。

问题是我的页面出现文件未找到错误,我无法在控制台中请求它。

控制台错误:

$ rails console
Loading development environment (Rails 4.2.0)
2.2.0 :001 > require 'dropbox-sdk'
LoadError: cannot load such file -- dropbox-sdk

页面错误:

LoadError in DashboardsController#monthly_sales_dashboard
No such file to load -- dropbox-sdk

Extracted source (around line #274):

  def require(file)
    result = false
    load_dependency(file) { result = super }
    result
  end
end

最奇怪的是它刚刚开始工作,从那时起我就没有更改任何配置或 gem。

我试过重新启动 Thin 甚至重新启动整个计算机,但没有成功。根据 Tim Moore 在类似问题中的回答,我检查了 Bundler 和 Rails 在同一版本上,并且它们都 运行 离开 2.2.0.

有什么想法吗?

虽然 gem 是用破折号命名的,但在需要 gem 时必须使用下划线:

require 'drobbox_sdk'

除了 infused 的回答之外,您可以通过在 Gemfile 中指定需要的名称来加载依赖项,而无需在代码中显式 require。只需将 gem 'dropbox-sdk' 替换为:

gem 'dropbox-sdk', require: 'dropbox_sdk'

它的行为与所有其他依赖项一样。