Class: RuboCop::Cop::Sidekiq::SymbolArgument

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

Overview

Checks for symbol arguments passed to Sidekiq job methods.

Symbols cannot be properly serialized to JSON and will be converted to strings. This can lead to unexpected behavior.

Examples:

# bad
MyJob.perform_async(:status)
MyJob.perform_async(key: :value)
MyJob.perform_in(1.hour, :pending)

# good
MyJob.perform_async('status')
MyJob.perform_async(key: 'value')
MyJob.perform_in(1.hour, 'pending')

Constant Summary collapse

MSG =
'Do not pass symbols to Sidekiq jobs. Use strings instead.'
RESTRICT_ON_SEND =
PerformMethods.all

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



35
36
37
38
39
# File 'lib/rubocop/cop/sidekiq/symbol_argument.rb', line 35

def on_send(node)
  sidekiq_perform_call?(node) do |args|
    check_arguments(args)
  end
end

#sidekiq_perform_call?(node) ⇒ Object



31
32
33
# File 'lib/rubocop/cop/sidekiq/symbol_argument.rb', line 31

def_node_matcher :sidekiq_perform_call?, "(send _ {\#{RESTRICT_ON_SEND.map(&:inspect).join(' ')}} $...)\n"