我想在Rails 4上使用ApplicationRecord Cop,我已经添加了'self.abstract_class = true‘。
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end这个文件被写成“minimum_target_rails_version 5.0”。
https://github.com/rubocop-hq/rubocop-rails/blob/master/lib/rubocop/cop/rails/application_record.rb
所以我创建了custom_cop,如下所示。
# frozen_string_literal: true
module CustomCops
# @example
#
# # good
# class Rails5Model < ApplicationRecord
# # ...
# end
#
# # bad
# class Rails4Model < ActiveRecord::Base
# # ...
# end
class MustApplicationRecord < RuboCop::Cop::Cop
MSG = 'Models should subclass `ApplicationRecord`.'
SUPERCLASS = 'ApplicationRecord'
BASE_PATTERN = '(const (const nil? :ActiveRecord) :Base)'
include RuboCop::Cop::EnforceSuperclass
def autocorrect(node)
lambda do |corrector|
corrector.replace(node.source_range, self.class::SUPERCLASS)
end
end
end
end但我在运行rspec时遇到错误,如下所示。
Failure/Error:
class MustApplicationRecord < RuboCop::Cop::Cop
MSG = 'Models should subclass `ApplicationRecord`.'
SUPERCLASS = 'ApplicationRecord'
BASE_PATTERN = '(const (const nil? :ActiveRecord) :Base)'
include RuboCop::Cop::EnforceSuperclass
def autocorrect(node)
lambda do |corrector|
corrector.replace(node.source_range, self.class::SUPERCLASS)
NameError:
uninitialized constant CustomCops::RuboCop你知道如何解决这个错误吗,或者其他方法(比如覆盖'minimum_target_rails_version 5.0‘到'minimum_target_rails_version 4.0’)?
版本
Rails 4.2.8
ruby 2.6.6
rubocop 0.80.1
RSpec 3.9发布于 2020-07-29 20:41:11
该错误将告诉您未定义RuboCop。
在你定义你的警察之前,你需要在某个地方使用require 'rubocop'。
https://stackoverflow.com/questions/63152918
复制相似问题