class ThisFeature::Adapters::Memory

Attributes

context_key_method[R]

Public Class Methods

new(context_key_method: nil) click to toggle source
# File lib/this_feature/adapters/memory.rb, line 5
def initialize(context_key_method: nil)
  @context_key_method = context_key_method
end

Public Instance Methods

clear() click to toggle source
# File lib/this_feature/adapters/memory.rb, line 9
def clear
  storage.clear
end
off!(flag_name, context: nil, data: {}) click to toggle source
# File lib/this_feature/adapters/memory.rb, line 43
def off!(flag_name, context: nil, data: {})
  storage[flag_name] ||= {}

  return storage[flag_name][:global] = false if context.nil?

  storage[flag_name][:contexts] ||= {}
  storage[flag_name][:contexts][context_key(context)] = false
end
off?(flag_name, context: nil, data: {}) click to toggle source
# File lib/this_feature/adapters/memory.rb, line 30
def off?(flag_name, context: nil, data: {})
  !on?(flag_name, context: context, data: data)
end
on!(flag_name, context: nil, data: {}) click to toggle source
# File lib/this_feature/adapters/memory.rb, line 34
def on!(flag_name, context: nil, data: {})
  storage[flag_name] ||= {}

  return storage[flag_name][:global] = true if context.nil?

  storage[flag_name][:contexts] ||= {}
  storage[flag_name][:contexts][context_key(context)] = true
end
on?(flag_name, context: nil, data: {}) click to toggle source
# File lib/this_feature/adapters/memory.rb, line 17
def on?(flag_name, context: nil, data: {})
  return false unless present?(flag_name)

  flag_data = storage[flag_name]

  return true if flag_data[:global]
  return false if context.nil?

  flag_data[:contexts] ||= {}

  !!flag_data[:contexts][context_key(context)]
end
present?(flag_name) click to toggle source
# File lib/this_feature/adapters/memory.rb, line 13
def present?(flag_name)
  !storage[flag_name].nil?
end
storage() click to toggle source
# File lib/this_feature/adapters/memory.rb, line 52
def storage
  @storage ||= {}
end

Private Instance Methods

context_key(context) click to toggle source
# File lib/this_feature/adapters/memory.rb, line 60
def context_key(context)
  return context if context_key_method.nil?

  context.send(context_key_method)
end