已经运行过`gem install spreadsheet`可是在代码中`require 'spreadsheet'`的时候还是会报错:`no such file to load -- spreadsheet`求解是什么情况。
如果你在 Gemfile 里使用 gem "spreadsheet" 这样的方式来加载 gems,你就不需要 require。特别是 Rails 这样的框架,因为它有 Autoloading 的机制,更加推荐你使用 Bundler (Gemfile) 来管理项目依赖的 gems。 当你手动 require 一个 gem,但是却报错说找不到,那么基本上都属于环境问题。简单地说就是,你以为你装了某个 gem,那么 ruby 就应该能找到它,但实际上并非绝对如此。你需要确认目前你可用的和正在用的 ruby 版本,以及它们搜索 gem 的路径;同时确认 gem 的环境变量里是否为对应的路径。建议你还是使用 rvm 或 rbenv 来管理下多版本的 ruby 开发环境吧。 如果控制和管理和环境不是你的菜,请使用 Bundler,用 bundle package 把需要的 gems 打包在项目的本地目录内,用 bundle install --binstubs 把所有可执行命令 wrap 到 ./bin 路径下。这也是一种可行的办法,但不推荐。
如果你在 Gemfile 里使用
gem "spreadsheet"
这样的方式来加载 gems,你就不需要require
。特别是 Rails 这样的框架,因为它有Autoloading
的机制,更加推荐你使用Bundler (Gemfile)
来管理项目依赖的 gems。当你手动
require
一个 gem,但是却报错说找不到,那么基本上都属于环境问题。简单地说就是,你以为你装了某个 gem,那么 ruby 就应该能找到它,但实际上并非绝对如此。你需要确认目前你可用的和正在用的 ruby 版本,以及它们搜索 gem 的路径;同时确认 gem 的环境变量里是否为对应的路径。建议你还是使用 rvm 或 rbenv 来管理下多版本的 ruby 开发环境吧。如果控制和管理和环境不是你的菜,请使用
Bundler
,用bundle package
把需要的 gems 打包在项目的本地目录内,用bundle install --binstubs
把所有可执行命令 wrap 到./bin
路径下。这也是一种可行的办法,但不推荐。