Class: RuboCop::Cop::Sidekiq::EnqueueInefficiency

Inherits:
Base
  • Object
show all
Defined in:
lib/rubocop/cop/sidekiq/enqueue_inefficiency.rb

Overview

Checks for perform_async calls inside loops and recommends perform_bulk.

Examples:

# bad
users.each do |user|
  NotifyJob.perform_async(user.id)
end

# good
user_ids = users.map { |user| [user.id] }
NotifyJob.perform_bulk(user_ids)

Constant Summary collapse

MSG =
'Prefer `perform_bulk` over `perform_async` inside loops to reduce Redis round trips.'
DEFAULT_ALLOWED_METHODS =
%w[each find_each find_in_batches].freeze

Instance Method Summary collapse

Methods included from Sidekiq::Language

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

Instance Method Details

#on_block(node) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/rubocop/cop/sidekiq/enqueue_inefficiency.rb', line 23

def on_block(node)
  send_node = node.send_node
  return unless allowed_method?(send_node)
  return unless meets_minimum_iterations?(send_node)

  check_send(node.body)
end

#on_numblock(node) ⇒ Object



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

def on_numblock(node)
  on_block(node)
end