Class: Fickle::AbstractBackend

Inherits:
Object
  • Object
show all
Defined in:
lib/fickle/abstract_backend.rb

Direct Known Subclasses

Backends::Memory

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ AbstractBackend

Returns a new instance of AbstractBackend.



4
5
6
7
8
# File 'lib/fickle/abstract_backend.rb', line 4

def initialize(options)
  @_klass = options[:feature_set_class]
  add_feature_set('global', new_feature_set('global', :set_default => true))
  add_feature_set('master', new_feature_set('master'))
end

Instance Method Details

#feature_set(key, model = nil) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/fickle/abstract_backend.rb', line 43

def feature_set(key, model=nil)
  if model
    feature_set = get_feature_set("#{model}-#{key}")
    add_model_feature_set("#{model}-#{key}", model)
  else
    feature_set = get_feature_set(key)
  end
  return feature_set
end

#global_disable(feature) ⇒ Object



23
24
25
# File 'lib/fickle/abstract_backend.rb', line 23

def global_disable(feature)
  feature_set('global').disable_feature(feature)
end

#global_enable(feature) ⇒ Object



19
20
21
# File 'lib/fickle/abstract_backend.rb', line 19

def global_enable(feature)
  feature_set('global').enable_feature(feature)
end

#inspectObject Also known as: to_s



53
54
55
# File 'lib/fickle/abstract_backend.rb', line 53

def inspect
  "#<Fickle::Backend overrides:#{feature_set('master').inspect} fallthroughs:#{feature_set('global').inspect}>"
end

#new_feature_set(feature_set_key, options = {}) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/fickle/abstract_backend.rb', line 10

def new_feature_set(feature_set_key, options={})
  options.merge!(:key => feature_set_key)
  if !['master', 'global'].include?(feature_set_key)
    options[:override] = feature_set('master')
    options[:fallthrough] = feature_set('global')
  end
  @_klass.new(options)
end

#override_disable(feature) ⇒ Object



35
36
37
# File 'lib/fickle/abstract_backend.rb', line 35

def override_disable(feature)
  feature_set('master').disable_feature(feature)
end

#override_enable(feature) ⇒ Object



31
32
33
# File 'lib/fickle/abstract_backend.rb', line 31

def override_enable(feature)
  feature_set('master').enable_feature(feature)
end

#remove_global(feature) ⇒ Object



27
28
29
# File 'lib/fickle/abstract_backend.rb', line 27

def remove_global(feature)
  feature_set('global').remove_feature(feature)
end

#remove_override(feature) ⇒ Object



39
40
41
# File 'lib/fickle/abstract_backend.rb', line 39

def remove_override(feature)
  feature_set('master').remove_feature(feature)
end