【发布时间】:2020-05-08 22:35:27
【问题描述】:
我在 Rubocop 文档中搜索了有关此内容的信息,但似乎无法理解发生了什么。
从一个名为“Foo”的全新 Rails 应用程序 (6.0.2.2) 开始,我将以下 gem 添加到我的 Gemfile 并安装它们:
gem 'rubocop', '~> 0.80.0', require: false
gem 'rubocop-checkstyle_formatter', require: false
gem 'rubocop-rails_config', require: false
目前已解决的 RuboCop 版本(鉴于我的版本限制)是 0.80.1。
然后我添加一个简单的模型:rails g model user name:string,它创建了app/models/user.rb。仅在该文件上运行 RuboCop, 没有 任何自定义配置文件,它只会抱怨没有冻结的字符串文字。我在与bundle exec rubocop app/models/user.rb 捆绑的上下文中执行此操作并获得以下信息:
Inspecting 1 file
C
Offenses:
app/models/user.rb:1:1: C: Style/FrozenStringLiteralComment: Missing frozen string literal comment.
class User < ApplicationRecord
^
然后将我的自定义.rubocop.yml文件添加到启用此规则的项目中,这与标准配置中的默认值不同:
Naming/FileName:
ExpectMatchingDefinition: true
重新运行分析后,会出现这种新的攻击:
app/models/user.rb:1:1: C: Naming/FileName: user.rb should define a class or module called Foo::App::Models::User.
class User < ApplicationRecord
^
注意它希望User 类定义为Foo::App::Models::User。我评估的每个文件都会发生这种情况。我已经清除了我所有的 gem,甚至我的 Ruby 并重新安装了,但问题仍然存在。奇怪的是其他同事无法重现该问题。
有人看过吗?感谢您的帮助!
【问题讨论】:
-
rubocop-rails_config 适用于 Rails 框架代码,而不适用于您创建的 Rails 应用程序。相反,您可以使用github.com/rubocop-hq/rubocop-rails(这有点令人困惑,因为 rubocop-rails_config 曾经被称为 rubocop-rails,但被重命名为:github.com/toshimaru/rubocop-rails/issues/31)
-
感谢@AndyWaite 的回复。我尝试了你的建议。将
rubocop-rails_config替换为rubocop-rails,但问题仍然存在——RuboCop 仍然希望我的班级被称为Foo::App::Models::User。这就是我现在的Gemfile.lock中的内容:rubocop (0.80.1) rubocop-checkstyle_formatter (0.4.0) rubocop-rails (2.5.2)
标签: ruby-on-rails rubocop