1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
module Flipper
module Adapters
class Failsafe
include ::Flipper::Adapter
# Public: The name of the adapter.
attr_reader :name
# Public: Build a new Failsafe instance.
#
# adapter - Flipper adapter to guard.
# options - Hash of options:
# :errors - Array of exception types for which to fail safe
def initialize(adapter, options = {})
@adapter = adapter
@errors = options.fetch(:errors, [StandardError])
@name = :failsafe
end
def features
@adapter.features
rescue *@errors
Set.new
end
def add(feature)
@adapter.add(feature)
rescue *@errors
false
end
def remove(feature)
@adapter.remove(feature)
rescue *@errors
false
end
def clear(feature)
@adapter.clear(feature)
rescue *@errors
false
end
def get(feature)
@adapter.get(feature)
rescue *@errors
{}
end
def get_multi(features)
@adapter.get_multi(features)
rescue *@errors
{}
end
def get_all
@adapter.get_all
rescue *@errors
{}
end
def enable(feature, gate, thing)
@adapter.enable(feature, gate, thing)
rescue *@errors
false
end
def disable(feature, gate, thing)
@adapter.disable(feature, gate, thing)
rescue *@errors
false
end
end
end
end
|