Techioz Blog

初期化されていない定数 RuboCop::Cop::Base

概要

以下のようなカスタムrubocopファイルを作成しようとすると、gem「rubocop」、「~> 0.81.0」を使用しています。

return unless defined?(::RuboCop)

module CustomCops
  class NoTimecop < ::RuboCop::Cop::Base
    MSG = "`Timecop` の代わりにRails標準の `ActiveSupport::Testing::TimeHelpers` が使えませんか?".freeze

    def on_send(node)
      if node.source.include?("Timecop") && node.receiver.const_name == "Timecop"
        add_offense(node)
      end
    end
  end
end

初期化されていない定数 RuboCop::Cop::Base というエラーが発生しました

このエラーはどうすれば修正できますか?

ここで何が欠けているのかわかりませんが、役立つフィードバックをいただければ幸いです。ありがとう!

解決策

あなたは古いバージョンの Rubocop を使用しています。0.81.0 は 3 年以上前にリリースされましたが、そのバージョンには確かに Rubocop::Cop::Base クラスがありませんでした。代わりに、カスタム cop は Rubocop::Cop::Cop という名前の別のクラスから継承する必要がありました。

つまり、次の 3 つの選択肢があります。

もちろん、最新バージョンを使用することをお勧めしますが、一部の警官が変更され、新しいバージョンが追加され、新しく見つかった違反をすべて修正するにはコードを更新する必要があるため、多少の労力が必要になる可能性があります。