Sha256: f0239e32767901f33b14452e6f7215c632e70f8cf48ee164ec5a9390cc7e3c88
Contents?: true
Size: 1.12 KB
Versions: 1
Compression:
Stored size: 1.12 KB
Contents
require 'flipper' require 'flipper/adapters/memory' require 'delegate' require 'timeout' module Flipper module Adapters class Fallback < SimpleDelegator VERSION = '0.1.0' 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 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 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
flipper-fallback-0.1.0 | lib/flipper/adapters/fallback.rb |