Class: RuboCop::Cop::Gusto::SidekiqParams

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

Overview

Disallow keyword arguments on Sidekiq ‘perform` methods. Sidekiq serializes job arguments as JSON and replays them positionally, so keyword arguments are not preserved.

Examples:

# bad
def perform(user_id:, force: false)
end

# good
def perform(user_id, force = false)
end

Constant Summary collapse

MSG =
"Sidekiq perform methods cannot take keyword arguments"

Instance Method Summary collapse

Instance Method Details

#on_def(node) ⇒ Object



26
27
28
# File 'lib/rubocop/cop/gusto/sidekiq_params.rb', line 26

def on_def(node)
  add_offense(node) if perform_with_kwargs?(node)
end

#perform_with_kwargs?(node) ⇒ Object



22
23
24
# File 'lib/rubocop/cop/gusto/sidekiq_params.rb', line 22

def_node_matcher :perform_with_kwargs?, <<~PATTERN
  (def :perform (args <{kwarg kwoptarg} ...>) ...)
PATTERN