自建Ruby Gem安装后无法加载主类出现NameError报错该如何修复?
修复方案
这个报错是Ruby Gem命名和Rails自动加载约定不匹配导致的,直接修改Gem的以下配置即可:
1. 新增默认加载入口文件
Bundler安装Gem后会默认自动加载Gem源码lib目录下和Gem同名的rb文件,你需要在Gem的lib目录新建ax-track-ruby-client.rb文件,写入内容:
# 先声明顶层命名空间,再引入主类文件 module AxTrack end require "ax_track/client"
2. 对齐目录结构和命名空间的对应关系
严格遵循Ruby/Rails的自动加载约定,目录/文件名和驼峰命名空间一一对应:
- 主类
AxTrack::Client对应的文件路径必须为lib/ax_track/client.rb - 所有下划线分隔的文件名对应驼峰命名的模块/类,比如
ax_track对应AxTrack
3. 确认gemspec配置正确
打开Gem源码下的ax-track-ruby-client.gemspec文件,确认存在以下配置:
spec.require_paths = ["lib"]
验证修改
修改完成后重新构建Gem,在测试Rails项目中重新安装后重启控制台,运行AxTrack::Client即可正常加载。
内容的提问来源于stack exchange,提问作者fydelio
相关产品推荐
相关产品推荐

