Sha256: 2a7651d130ab17f25c3a529802f538e6bcb43ada379538a75f5f3acd4e0f46f9

Contents?: true

Size: 1.28 KB

Versions: 2

Compression:

Stored size: 1.28 KB

Contents

require "sidekiq/expected_failures/version"
require "sidekiq/expected_failures/middleware"


module Sidekiq

  def self.expected_failures=(exceptions)
    @expected_failures = exceptions
  end

  def self.expected_failures
    @expected_failures || {}
  end

  module ExpectedFailures

    def self.dates
      Sidekiq.redis do |c|
        c.smembers "expected:dates"
      end.sort.reverse.each_with_object({}) do |d, hash|
        hash[d] = Sidekiq.redis { |c| c.llen("expected:#{d}") }
      end
    end

    def self.counters
      Sidekiq.redis { |r| r.hgetall("expected:count") }
    end

    def self.clear_all
      clear(dates.keys)
    end

    def self.clear_old(days_ago = 1)
      range = dates.keys.delete_if { |d| Date.parse(d) > Date.today.prev_day(days_ago) }
      clear(range)
    end

    def self.clear_counters
      Sidekiq.redis { |r| r.del("expected:count") }
    end

    private

      def self.clear(dates)
        dates.each do |date|
          Sidekiq.redis do |c|
            c.multi do |m|
              m.srem("expected:dates", date)
              m.del("expected:#{date}")
            end
          end
        end
      end
  end
end

Sidekiq.configure_server do |config|
  config.server_middleware do |chain|
    chain.add Sidekiq::ExpectedFailures::Middleware
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sidekiq-expected_failures-0.3.0 lib/sidekiq/expected_failures.rb
sidekiq-expected_failures-0.2.5 lib/sidekiq/expected_failures.rb