class Flipper::Adapters::Memory
Public: Adapter for storing everything in memory (ie: Hash). Useful for tests/specs.
Constants
- FeaturesKey
Attributes
name[R]
Public: The name of the adapter.
Public Class Methods
new(source = nil)
click to toggle source
Public
# File lib/flipper/adapters/memory.rb, line 16 def initialize(source = nil) @source = source || {} @name = :memory end
Public Instance Methods
add(feature)
click to toggle source
Public: Adds a feature to the set of known features.
# File lib/flipper/adapters/memory.rb, line 27 def add(feature) features.add(feature.key) true end
clear(feature)
click to toggle source
Public: Clears all the gate values for a feature.
# File lib/flipper/adapters/memory.rb, line 41 def clear(feature) feature.gates.each do |gate| delete key(feature, gate) end true end
disable(feature, gate, thing)
click to toggle source
Public
# File lib/flipper/adapters/memory.rb, line 80 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)
click to toggle source
Public
# File lib/flipper/adapters/memory.rb, line 66 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
features()
click to toggle source
Public: The set of known features.
# File lib/flipper/adapters/memory.rb, line 22 def features read_feature_keys end
get(feature)
click to toggle source
Public
# File lib/flipper/adapters/memory.rb, line 49 def get(feature) read_feature(feature) end
get_all()
click to toggle source
# File lib/flipper/adapters/memory.rb, line 57 def get_all features = read_feature_keys.map do |key| Flipper::Feature.new(key, self) end read_many_features(features) end
get_multi(features)
click to toggle source
# File lib/flipper/adapters/memory.rb, line 53 def get_multi(features) read_many_features(features) end
inspect()
click to toggle source
Public
# File lib/flipper/adapters/memory.rb, line 96 def inspect attributes = [ 'name=:memory', "source=#{@source.inspect}", ] "#<#{self.class.name}:#{object_id} #{attributes.join(', ')}>" end
remove(feature)
click to toggle source
Public: Removes a feature from the set of known features and clears all the values for the feature.
# File lib/flipper/adapters/memory.rb, line 34 def remove(feature) features.delete(feature.name.to_s) clear(feature) true end
Private Instance Methods
delete(key)
click to toggle source
Private
# File lib/flipper/adapters/memory.rb, line 152 def delete(key) @source.delete(key.to_s) end
ensure_set_initialized(key)
click to toggle source
Private
# File lib/flipper/adapters/memory.rb, line 175 def ensure_set_initialized(key) @source[key.to_s] ||= Set.new end
key(feature, gate)
click to toggle source
Private
# File lib/flipper/adapters/memory.rb, line 111 def key(feature, gate) "feature/#{feature.key}/#{gate.key}" end
read(key)
click to toggle source
Private
# File lib/flipper/adapters/memory.rb, line 142 def read(key) @source[key.to_s] end
read_feature(feature)
click to toggle source
# File lib/flipper/adapters/memory.rb, line 123 def read_feature(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
read_feature_keys()
click to toggle source
# File lib/flipper/adapters/memory.rb, line 106 def read_feature_keys set_members(FeaturesKey) end
read_many_features(features)
click to toggle source
# File lib/flipper/adapters/memory.rb, line 115 def read_many_features(features) result = {} features.each do |feature| result[feature.key] = read_feature(feature) end result end
set_add(key, value)
click to toggle source
Private
# File lib/flipper/adapters/memory.rb, line 157 def set_add(key, value) ensure_set_initialized(key) @source[key.to_s].add(value.to_s) end
set_delete(key, value)
click to toggle source
Private
# File lib/flipper/adapters/memory.rb, line 163 def set_delete(key, value) ensure_set_initialized(key) @source[key.to_s].delete(value.to_s) end
set_members(key)
click to toggle source
Private
# File lib/flipper/adapters/memory.rb, line 169 def set_members(key) ensure_set_initialized(key) @source[key.to_s] end
write(key, value)
click to toggle source
Private
# File lib/flipper/adapters/memory.rb, line 147 def write(key, value) @source[key.to_s] = value.to_s end