为什么 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'
它的行为与所有其他依赖项一样。
我正在使用 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'
它的行为与所有其他依赖项一样。