Class: Flipper::Adapters::Memory
- Inherits:
-
Object
- Object
- Flipper::Adapters::Memory
- Includes:
- Flipper::Adapter
- Defined in:
- lib/flipper/adapters/memory.rb
Constant Summary collapse
- FeaturesKey =
:flipper_features
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Public: The name of the adapter.
Instance Method Summary collapse
-
#add(feature) ⇒ Object
Public: Adds a feature to the set of known features.
-
#clear(feature) ⇒ Object
Public: Clears all the gate values for a feature.
-
#delete(key) ⇒ Object
Private.
-
#disable(feature, gate, thing) ⇒ Object
Public.
-
#enable(feature, gate, thing) ⇒ Object
Public.
-
#ensure_set_initialized(key) ⇒ Object
Private.
-
#features ⇒ Object
Public: The set of known features.
-
#get(feature) ⇒ Object
Public.
-
#initialize(source = nil) ⇒ Memory
constructor
Public.
-
#inspect ⇒ Object
Public.
-
#key(feature, gate) ⇒ Object
Private.
-
#read(key) ⇒ Object
Private.
-
#remove(feature) ⇒ Object
Public: Removes a feature from the set of known features and clears all the values for the feature.
-
#set_add(key, value) ⇒ Object
Private.
-
#set_delete(key, value) ⇒ Object
Private.
-
#set_members(key) ⇒ Object
Private.
-
#write(key, value) ⇒ Object
Private.
Constructor Details
#initialize(source = nil) ⇒ Memory
Public
14 15 16 17 |
# File 'lib/flipper/adapters/memory.rb', line 14 def initialize(source = nil) @source = source || {} @name = :memory end |
Instance Attribute Details
#name ⇒ Object (readonly)
Public: The name of the adapter.
11 12 13 |
# File 'lib/flipper/adapters/memory.rb', line 11 def name @name end |
Instance Method Details
#add(feature) ⇒ Object
Public: Adds a feature to the set of known features.
25 26 27 28 |
# File 'lib/flipper/adapters/memory.rb', line 25 def add(feature) features.add(feature.name.to_s) true end |
#clear(feature) ⇒ Object
Public: Clears all the gate values for a feature.
39 40 41 42 43 44 |
# File 'lib/flipper/adapters/memory.rb', line 39 def clear(feature) feature.gates.each do |gate| delete key(feature, gate) end true end |
#delete(key) ⇒ Object
Private
119 120 121 |
# File 'lib/flipper/adapters/memory.rb', line 119 def delete(key) @source.delete(key.to_s) end |
#disable(feature, gate, thing) ⇒ Object
Public
79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/flipper/adapters/memory.rb', line 79 def disable(feature, gate, thing) case gate.data_type when :boolean clear(feature) when :integer write key(feature, gate), thing.value.to_s when :set set_delete key(feature, gate), thing.value.to_s else raise "#{gate} is not supported by this adapter yet" end true end |
#enable(feature, gate, thing) ⇒ Object
Public
65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/flipper/adapters/memory.rb', line 65 def enable(feature, gate, thing) case gate.data_type when :boolean, :integer write key(feature, gate), thing.value.to_s when :set set_add key(feature, gate), thing.value.to_s else raise "#{gate} is not supported by this adapter yet" end true end |
#ensure_set_initialized(key) ⇒ Object
Private
142 143 144 |
# File 'lib/flipper/adapters/memory.rb', line 142 def ensure_set_initialized(key) @source[key.to_s] ||= Set.new end |
#features ⇒ Object
Public: The set of known features.
20 21 22 |
# File 'lib/flipper/adapters/memory.rb', line 20 def features set_members(FeaturesKey) end |
#get(feature) ⇒ Object
Public
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/flipper/adapters/memory.rb', line 47 def get(feature) result = {} feature.gates.each do |gate| result[gate.key] = case gate.data_type when :boolean, :integer read key(feature, gate) when :set set_members key(feature, gate) else raise "#{gate} is not supported by this adapter yet" end end result end |
#inspect ⇒ Object
Public
95 96 97 98 99 100 101 |
# File 'lib/flipper/adapters/memory.rb', line 95 def inspect attributes = [ "name=:memory", "source=#{@source.inspect}", ] "#<#{self.class.name}:#{object_id} #{attributes.join(', ')}>" end |
#key(feature, gate) ⇒ Object
Private
104 105 106 |
# File 'lib/flipper/adapters/memory.rb', line 104 def key(feature, gate) "#{feature.key}/#{gate.key}" end |
#read(key) ⇒ Object
Private
109 110 111 |
# File 'lib/flipper/adapters/memory.rb', line 109 def read(key) @source[key.to_s] end |
#remove(feature) ⇒ Object
Public: Removes a feature from the set of known features and clears all the values for the feature.
32 33 34 35 36 |
# File 'lib/flipper/adapters/memory.rb', line 32 def remove(feature) features.delete(feature.name.to_s) clear(feature) true end |
#set_add(key, value) ⇒ Object
Private
124 125 126 127 |
# File 'lib/flipper/adapters/memory.rb', line 124 def set_add(key, value) ensure_set_initialized(key) @source[key.to_s].add(value.to_s) end |
#set_delete(key, value) ⇒ Object
Private
130 131 132 133 |
# File 'lib/flipper/adapters/memory.rb', line 130 def set_delete(key, value) ensure_set_initialized(key) @source[key.to_s].delete(value.to_s) end |
#set_members(key) ⇒ Object
Private
136 137 138 139 |
# File 'lib/flipper/adapters/memory.rb', line 136 def set_members(key) ensure_set_initialized(key) @source[key.to_s] end |
#write(key, value) ⇒ Object
Private
114 115 116 |
# File 'lib/flipper/adapters/memory.rb', line 114 def write(key, value) @source[key.to_s] = value.to_s end |