Class: RuboCop::Cop::Sidekiq::FindEachInJob

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

Overview

Checks for find_each/find_in_batches usage inside Sidekiq job perform methods.

Examples:

# bad
class ProcessAllUsersJob
  include Sidekiq::Job

  def perform
    User.find_each { |user| process(user) }
  end
end

# good
class ProcessUserJob
  include Sidekiq::Job

  def perform(user_id)
    user = User.find(user_id)
    process(user)
  end
end

Constant Summary collapse

MSG =
'Avoid processing large datasets in a single Sidekiq job. Split into smaller jobs instead.'
DEFAULT_ALLOWED_METHODS =
[].freeze
RESTRICT_ON_SEND =
%i[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_send(node) ⇒ Object Also known as: on_csend



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

def on_send(node)
  return unless in_sidekiq_job?(node)
  return unless in_perform_method?(node)
  return if allowed_method?(node)

  add_offense(node)
end