Sha256: 8d025c5fe17fcdd8df0070729cf5b963385caa761e1df298693a1fcb545690f7
Contents?: true
Size: 1007 Bytes
Versions: 2
Compression:
Stored size: 1007 Bytes
Contents
require 'flipper/errors' require 'flipper/type' require 'flipper/toggle' require 'flipper/gate' module Flipper class Feature attr_reader :name attr_reader :adapter def initialize(name, adapter) @name = name @adapter = adapter end def enable(thing = Types::Boolean.new) gate_for(thing).enable(thing) end def disable(thing = Types::Boolean.new) gate_for(thing).disable(thing) end def enabled?(actor = nil) !! catch(:short_circuit) { gates.detect { |gate| gate.open?(actor) } } end def disabled?(actor = nil) !enabled?(actor) end private def gate_for(thing) gates.detect { |gate| gate.protects?(thing) } || raise(GateNotFound.new(thing)) end def gates @gates ||= [ Gates::Boolean.new(self), Gates::Group.new(self), Gates::Actor.new(self), Gates::PercentageOfActors.new(self), Gates::PercentageOfRandom.new(self), ] end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
flipper-0.1.1 | lib/flipper/feature.rb |
flipper-0.1.0 | lib/flipper/feature.rb |