Class: RuboCop::Cop::Sidekiq::SleepInJobs
- Defined in:
- lib/rubocop/cop/sidekiq/sleep_in_jobs.rb
Overview
Checks for sleep calls inside Sidekiq jobs.
Using sleep in a Sidekiq job blocks the worker thread and prevents
it from processing other jobs. Instead, use perform_in or
perform_at to schedule the job for later.
Constant Summary collapse
- MSG =
'Do not use `sleep` in Sidekiq jobs. ' \ 'It blocks the worker thread. Use `perform_in` or `perform_at` instead.'
- RESTRICT_ON_SEND =
%i[sleep].freeze
Instance Method Summary collapse
- #on_send(node) ⇒ Object (also: #on_csend)
- #sleep_call?(node) ⇒ Object
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
36 37 38 39 40 41 |
# File 'lib/rubocop/cop/sidekiq/sleep_in_jobs.rb', line 36 def on_send(node) return unless sleep_call?(node) return unless in_sidekiq_job?(node) add_offense(node) end |
#sleep_call?(node) ⇒ Object
32 33 34 |
# File 'lib/rubocop/cop/sidekiq/sleep_in_jobs.rb', line 32 def_node_matcher :sleep_call?, <<~PATTERN (send {nil? (const {nil? cbase} :Kernel)} :sleep ...) PATTERN |