bundle install正常但gem加载失败问题求助
本地构建RuPlot Gem时的加载错误解决指南
问题场景
我正在本地构建一个gem,在代码中使用require 'RuPlot'时出现加载错误,错误输出如下:
/Users/arafat/.rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- ruplot (LoadError) from /Users/arafat/.rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' from hello.rb:2:in `<main>'
RubyGems环境信息
- RUBYGEMS VERSION: 2.6.11 - RUBY VERSION: 2.4.1 (2017-03-22 patchlevel 111) [x86_64-darwin16] - INSTALLATION DIRECTORY: /Users/arafat/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0 - USER INSTALLATION DIRECTORY: /Users/arafat/.gem/ruby/2.4.0 - RUBY EXECUTABLE: /Users/arafat/.rbenv/versions/2.4.1/bin/ruby - EXECUTABLE DIRECTORY: /Users/arafat/.rbenv/versions/2.4.1/bin - SPEC CACHE DIRECTORY: /Users/arafat/.gem/specs - SYSTEM CONFIGURATION DIRECTORY: /Users/arafat/.rbenv/versions/2.4.1/etc - RUBYGEMS PLATFORMS: - ruby - x86_64-darwin-16 - GEM PATHS: - /Users/arafat/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0 - /Users/arafat/.gem/ruby/2.4.0
Bundler环境信息
Bundler 1.16.1 Platforms ruby, x86_64-darwin-16 Ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16] Full Path /Users/arafat/.rbenv/versions/2.4.1/bin/ruby Config Dir /Users/arafat/.rbenv/versions/2.4.1/etc RubyGems 2.6.11 Gem Home /Users/arafat/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0 Gem Path /Users/arafat/.gem/ruby/2.4.0:/Users/arafat/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0
解决步骤
1. 修正大小写匹配问题
Ruby的require是大小写敏感的,错误提示找不到ruplot(全小写),但你代码里写的是require 'RuPlot'。先确认:
- 你的gem主文件路径是
lib/ruplot.rb还是lib/RuPlot.rb?建议统一用小写命名(Ruby社区惯例),然后把代码里的require改成require 'ruplot' - 如果要保留大小写,确保gemspec里的
autorequire配置正确指向你的主文件,比如spec.autorequire = 'RuPlot'
2. 确认本地gem已正确安装
先检查本地是否已经安装了你的RuPlot gem:
gem list ruplot
如果没有列出,需要先构建并安装:
- 切换到你的gem项目根目录
- 运行构建命令:
gem build ruplot.gemspec(替换成你的gemspec文件名) - 安装本地生成的gem包:
gem install ./ruplot-<version>.gem(替换成实际生成的文件名)
3. 配置Bundler管理本地gem(如果使用Bundler)
如果你用Bundler来管理项目依赖,需要把本地gem添加到Gemfile中:
gem 'ruplot', path: '/path/to/your/local/ruplot/gem'
然后执行:
bundle install
之后要用Bundler来执行你的脚本,确保加载正确的gem版本:
bundle exec ruby hello.rb
4. 验证gem的文件结构与gemspec配置
确保你的gem项目结构符合RubyGem规范:
- 主文件放在
lib/目录下,比如lib/ruplot.rb - gemspec里的
spec.files要包含lib目录下的所有文件,比如:spec.files = Dir["lib/**/*", "README.md", "LICENSE.txt"] - 确认
spec.require_paths设置为["lib"](这是默认值,但最好检查一下)
内容的提问来源于stack exchange,提问作者ArafatK
相关产品推荐
相关产品推荐

