Class: RuboCop::Cop::SidekiqEnt::PeriodicJobInvalidCron

Inherits:
Base
  • Object
show all
Defined in:
lib/rubocop/cop/sidekiq_ent/periodic_job_invalid_cron.rb

Overview

Checks that cron expressions in periodic job registration are valid.

Invalid cron expressions will cause Sidekiq Enterprise to fail when loading the periodic job configuration.

Examples:

# bad - invalid cron (6 fields)
config.periodic do |mgr|
  mgr.register('0 * * * * *', 'SomeJob')
end

# bad - invalid minute value
config.periodic do |mgr|
  mgr.register('60 * * * *', 'SomeJob')
end

# good - valid cron
config.periodic do |mgr|
  mgr.register('0 * * * *', 'SomeJob')
end

Constant Summary collapse

MSG =
'Invalid cron expression: %<reason>s'

Instance Method Summary collapse

Methods inherited from Base

#limiter_creation?, #unique_for_option?, #unique_until_option?

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
40
# File 'lib/rubocop/cop/sidekiq_ent/periodic_job_invalid_cron.rb', line 35

def on_send(node)
  periodic_register?(node) do |cron_expression|
    error = validate_cron(cron_expression)
    add_offense(node.first_argument, message: format(MSG, reason: error)) if error
  end
end

#periodic_register?(node) ⇒ Object



31
32
33
# File 'lib/rubocop/cop/sidekiq_ent/periodic_job_invalid_cron.rb', line 31

def_node_matcher :periodic_register?, <<~PATTERN
  (send _ :register (str $_) ...)
PATTERN