Sha256: 9d8514ebad7378f14d32b94f3aea847a2954b63baab21c37e87cb2cbdcdd4beb

Contents?: true

Size: 1.04 KB

Versions: 4

Compression:

Stored size: 1.04 KB

Contents

require 'sidekiq/circuit_breaker/configuration'

module Sidekiq
  module CircuitBreaker
    module Worker
      def self.included(base)
        base.extend(ClassMethods)
      end

      def sidekiq_circuit_breaker_manager(args)
        options = self.class.sidekiq_circuit_breaker_options
        scope = scope(args)
        CircuitBreaker::Manager.new(scope, options)
      end

      private

      def scope(args)
        options = self.class.sidekiq_circuit_breaker_options
        extract_scope(options, args) || self.class.name
      end

      def extract_scope(options, args)
        scope = options.scope
        return scope if scope.is_a?(String)

        options.scope.call(*args)
      end


      module ClassMethods
        def sidekiq_circuit_breaker_enabled?
          true
        end

        def sidekiq_circuit_breaker
          yield(sidekiq_circuit_breaker_options) if block_given?
        end

        def sidekiq_circuit_breaker_options
          @@setup ||= Sidekiq::CircuitBreaker::Configuration.new
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sidekiq-circuit-breaker-0.1.3 lib/sidekiq/circuit_breaker/worker.rb
sidekiq-circuit-breaker-0.1.2 lib/sidekiq/circuit_breaker/worker.rb
sidekiq-circuit-breaker-0.1.1 lib/sidekiq/circuit_breaker/worker.rb
sidekiq-circuit-breaker-0.1.0 lib/sidekiq/circuit_breaker/worker.rb