【问题标题】:How to use RuboCop::Cop::Rails::ApplicationRecord on Rails 4如何在 Rails 4 上使用 RuboCop::Cop::Rails::ApplicationRecord
【发布时间】:2020-07-29 11:47:25
【问题描述】:

我想在 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

【问题讨论】:

    标签: ruby-on-rails-4 rubocop


    【解决方案1】:

    错误是告诉你RuboCop 没有定义。

    在定义警察之前,您需要在某个地方require 'rubocop'

    【讨论】:

    • 我明白了。谢谢!
    猜你喜欢
    • 2018-06-10
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    相关资源
    最近更新 更多