首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应该如何定义一个带有子类的模块,才能使Rubocop规则样式/ClassAndModuleChildren通过?

应该如何定义一个带有子类的模块,才能使Rubocop规则样式/ClassAndModuleChildren通过?
EN

Stack Overflow用户
提问于 2020-11-28 14:21:54
回答 1查看 87关注 0票数 0

基本上我有这个。

代码语言:javascript
复制
module EcommerceApi
  class Application < Rails::Application
  end
end

但鲁博科普仍在抱怨:

代码语言:javascript
复制
Use compact module/class definition instead of nested style.Style/ClassAndModuleChildren

在这种情况下,应该如何定义?

EN

回答 1

Stack Overflow用户

发布于 2020-12-01 05:20:40

你应该叫那个警察滚开by ignoring it这个cop实际上与Rubocop应该执行的Ruby风格指南相冲突:

使用显式嵌套定义(并重新打开)命名空间类和模块。由于Ruby的词法作用域,使用作用域解析操作符可能会导致令人惊讶的常量查找,这取决于定义点处的模块嵌套。

基本上,这就是说,如果你使用class EcommerceApi::Application而不是显式嵌套,那么里面嵌套的模块将是[EcommerceApi::Application]而不是[EcommerceApi, EcommerceApi::Application]。因此,如果引用Foo,将不会获得EcommerceApi::Foo,而是从全局名称空间获得::Foo (或缺少常量错误)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65047005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档