Sha256: 58fb82233913991eeaafb100776eda7ebc562be58ff458f22567f0a3f57e1062

Contents?: true

Size: 795 Bytes

Versions: 1

Compression:

Stored size: 795 Bytes

Contents

require 'flipper'
require 'flipper/adapters/memory'
require 'delegate'

module Flipper
  module Adapters
    class Fallback < SimpleDelegator
      VERSION = '0.0.1'
      def initialize(primary_adapter, fallback_adapter = Flipper::Adapters::Memory.new)
        super(primary_adapter)
        @primary_adapter = primary_adapter
        @fallback_adapter = fallback_adapter

        @delegate_sd_obj = primary_adapter
      end

      def method_missing(m, *args, &block)
        super
      rescue => e
        STDERR.puts("[Flipper::Adapters::Fallback] Primary adapter(#{@primary_adapter.inspect}) Failure! #{e}")
        STDERR.puts("[Flipper::Adapters::Fallback] Falling back to #{@fallback_adapter.inspect})")
        @fallback_adapter.__send__(m, *args, &block)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
flipper-fallback-0.0.1 lib/flipper/adapters/fallback.rb