Zeitwerk检测报错:嵌套模块类出现未定义常量错误
问题与解决方法
问题描述
类文件存放路径为lib/snowflake/connection.rb,代码内容如下:
module SnowFlake class Connection end end
执行Zeitwerk:check时触发错误:
期望文件 lib/snow_flake/connection.rb 定义常量 Connection
原因分析
Zeitwerk遵循严格的命名约定:文件/目录的下划线命名与常量的驼峰命名一一对应。这里的矛盾点在于:
- 模块名
SnowFlake(驼峰拆分后为Snow+Flake)对应的下划线路径应为snow_flake - 实际文件目录是
snowflake,与Zeitwerk期望的路径不匹配,导致常量映射失败
解决方法
任选一种方案即可:
- 调整目录路径:将
lib/snowflake/重命名为lib/snow_flake/,让目录名与模块名的下划线形式对应 - 修改模块名:把代码中的
module SnowFlake改为module Snowflake,让模块名与现有目录名的驼峰形式对应
内容的提问来源于stack exchange,提问作者user3775217
相关产品推荐
相关产品推荐

