class Flipper::Adapters::Fallback

Constants

VERSION

Public Class Methods

new(primary_adapter, options = {}, fallback_adapter = Flipper::Adapters::Memory.new) click to toggle source
Calls superclass method
# File lib/flipper/adapters/fallback.rb, line 11
def initialize(primary_adapter, options = {}, fallback_adapter = Flipper::Adapters::Memory.new)
  super(primary_adapter)
  @primary_adapter = primary_adapter
  @fallback_adapter = fallback_adapter

  @delegate_sd_obj = primary_adapter

  @on_error = options[:on_error] || lambda do |error, primary_adapter, fallback_adapter|
    STDERR.puts("[Flipper::Adapters::Fallback] Primary adapter(#{primary_adapter.inspect}) Failure! #{error}")
    STDERR.puts("[Flipper::Adapters::Fallback] Falling back to #{fallback_adapter.inspect})")
  end

  @timeout = options[:timeout]
end

Public Instance Methods

method_missing(m, *args, &block) click to toggle source
Calls superclass method
# File lib/flipper/adapters/fallback.rb, line 26
def method_missing(m, *args, &block)
  Timeout::timeout(@timeout) do
    begin
      super
    rescue => error
      @on_error.call(error, @primary_adapter, @fallback_adapter)
      @fallback_adapter.__send__(m, *args, &block)
    end
  end
end