Sha256: 1c8f68c56bfc347e1736ba9c264e8beb3088cc3ff73a7cb4fec4637431eabce1

Contents?: true

Size: 1.49 KB

Versions: 2

Compression:

Stored size: 1.49 KB

Contents

begin
  require "sidekiq/web"
  rescue LoadError
end

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

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
      range = dates.keys.delete_if { |d| Date.parse(d) > Date.today.prev_day }
      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

if defined?(Sidekiq::Web)
  Sidekiq::Web.register Sidekiq::ExpectedFailures::Web
  Sidekiq::Web.tabs["Expected Failures"] = "expected_failures"
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.2.3 lib/sidekiq/expected_failures.rb
sidekiq-expected_failures-0.2.2 lib/sidekiq/expected_failures.rb