class Sidekiq::Cronitor::Middleware

Public Instance Methods

call(worker, message, queue) { || ... } click to toggle source
# File lib/sidekiq/cronitor.rb, line 46
def call(worker, message, queue)
  ping(worker: worker, state: 'run')

  yield
rescue => e
  ping(worker: worker, state: 'fail', message: e.to_s)

  raise e
else
  ping(worker: worker, state: 'complete')
end

Private Instance Methods

has_cronitor?(worker) click to toggle source
# File lib/sidekiq/cronitor.rb, line 73
def has_cronitor?(worker)
  worker.is_a?(Sidekiq::Cronitor) && worker.respond_to?(:cronitor) && !worker.cronitor.api_key.nil?
end
ping(worker:, state:, message: nil) click to toggle source
# File lib/sidekiq/cronitor.rb, line 60
def ping(worker:, state:, message: nil)
  return unless has_cronitor?(worker)

  Sidekiq.logger.debug("[cronitor] ping: worker=#{worker.class.name} state=#{state} message=#{message}")

  worker.cronitor.ping(state: state)
rescue Cronitor::Error => e
  Sidekiq.logger.error("[cronitor] error during ping: worker=#{worker.class.name} error=#{e.message}")
rescue => e
  Sidekiq.logger.error("[cronitor] unexpected error: worker=#{worker.class.name} error=#{e.message}")
  Sidekiq.logger.error(e.backtrace.first)
end