class Sidekiq::ExpectedFailures::Middleware
Attributes
handled_exceptions[R]
Public Instance Methods
call(worker, msg, queue) { || ... }
click to toggle source
# File lib/sidekiq/expected_failures/middleware.rb, line 9 def call(worker, msg, queue) setup_exceptions(worker) yield rescue *handled_exceptions.keys => ex data = { failed_at: Time.now.strftime("%Y/%m/%d %H:%M:%S %Z"), args: msg['args'], exception: ex.class.to_s, error: ex.message, worker: msg['class'], queue: queue } log_exception(data, ex, msg) end
Private Instance Methods
exception_intervals(ex)
click to toggle source
# File lib/sidekiq/expected_failures/middleware.rb, line 33 def exception_intervals(ex) [handled_exceptions[ex.class]].flatten.compact end
log_exception(data, ex, msg)
click to toggle source
# File lib/sidekiq/expected_failures/middleware.rb, line 37 def log_exception(data, ex, msg) result = Sidekiq.redis do |conn| conn.multi do |m| m.lpush("expected:#{today}", Sidekiq.dump_json(data)) m.sadd("expected:dates", today) m.hincrby("expected:count", data[:exception], 1) end end handle_exception(ex, msg) if exception_intervals(ex).include?(result[0]) end
setup_exceptions(worker)
click to toggle source
# File lib/sidekiq/expected_failures/middleware.rb, line 29 def setup_exceptions(worker) @handled_exceptions = worker.class.get_sidekiq_options['expected_failures'] || Sidekiq.expected_failures end
today()
click to toggle source
# File lib/sidekiq/expected_failures/middleware.rb, line 49 def today Date.today.to_s end