Class: RuboCop::Cop::Sidekiq::JobInclude

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Defined in:
lib/rubocop/cop/sidekiq/job_include.rb

Overview

Checks that Sidekiq jobs include the preferred module.

Sidekiq::Worker was renamed to Sidekiq::Job in Sidekiq 6.3. Sidekiq::Job is the preferred module name.

Examples:

PreferredModule: Job (default)

# bad
class MyJob
  include Sidekiq::Worker
end

# good
class MyJob
  include Sidekiq::Job
end

PreferredModule: Worker

# bad
class MyJob
  include Sidekiq::Job
end

# good
class MyJob
  include Sidekiq::Worker
end

Constant Summary collapse

MSG =
'Use `Sidekiq::%<preferred>s` instead of `Sidekiq::%<deprecated>s`.'
MODULES =
%w[Job Worker].freeze

Instance Method Summary collapse

Methods included from Sidekiq::Language

#active_job_class?, #perform_call?, #sidekiq_include?, #sidekiq_options_call?

Instance Method Details

#on_send(node) ⇒ Object Also known as: on_csend



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/rubocop/cop/sidekiq/job_include.rb', line 45

def on_send(node)
  sidekiq_include(node) do |module_name|
    return if module_name.to_s == preferred_module

    deprecated = module_name.to_s
    message = format(MSG, preferred: preferred_module, deprecated: deprecated)

    add_offense(node, message: message) do |corrector|
      corrector.replace(node, "include Sidekiq::#{preferred_module}")
    end
  end
end

#sidekiq_include(node) ⇒ Object



41
42
43
# File 'lib/rubocop/cop/sidekiq/job_include.rb', line 41

def_node_matcher :sidekiq_include, <<~PATTERN
  (send nil? :include (const (const {nil? cbase} :Sidekiq) ${:Job :Worker}))
PATTERN