Class: RuboCop::Cop::Gusto::PerformClassMethod

Inherits:
Base
  • Object
show all
Defined in:
lib/rubocop/cop/gusto/perform_class_method.rb

Overview

Checks for a defined ‘.perform` class method in Sidekiq workers. These are most likely intended to have been instance methods.

Examples:

# bad
class MyWorker
  include Sidekiq::Worker

  def self.perform
    # ...
  end
end

# good
class MyWorker
  include Sidekiq::Worker

  def perform
    # ...
  end
end

Constant Summary collapse

MSG =
"Class-level `perform` method is being defined. Did you mean to use an instance method?"
WORKER_FALLBACK =
%w(Sidekiq::Worker).freeze
WORKER_MODULES =
"WorkerModules"

Instance Method Summary collapse

Instance Method Details

#on_def(node) ⇒ Object Also known as: on_defs



38
39
40
41
42
43
44
# File 'lib/rubocop/cop/gusto/perform_class_method.rb', line 38

def on_def(node)
  return unless node.method?(:perform)
  return unless (method_type = perform_class_method_type(node))
  return unless is_sidekiq_worker?(node, method_type)

  add_offense(node)
end

#worker_module_include?(node) ⇒ Object



34
35
36
# File 'lib/rubocop/cop/gusto/perform_class_method.rb', line 34

def_node_matcher :worker_module_include?, <<~PATTERN
  (send nil? :include (const _ _))
PATTERN