Module: FeatureFlipper::Config

Defined in:
lib/feature_flipper/config.rb

Class Method Summary collapse

Class Method Details

.active_features(context = nil) ⇒ Object



69
70
71
# File 'lib/feature_flipper/config.rb', line 69

def self.active_features(context = nil)
  self.features.collect { |key, value| self.is_active?(key, context) ? key : nil }.compact
end

.active_state?(state, feature_name, context = nil) ⇒ Boolean

Returns:



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/feature_flipper/config.rb', line 49

def self.active_state?(state, feature_name, context = nil)
  condition = states[state]
  if condition.is_a?(Proc)
    if context
      context.instance_exec(feature_name, &condition)
    else
      condition.call(feature_name) == true
    end
  else
    condition == true
  end
end

.ensure_config_is_loadedObject



14
15
16
17
18
19
# File 'lib/feature_flipper/config.rb', line 14

def self.ensure_config_is_loaded
  return if @config_loaded

  load path_to_file
  @config_loaded = true
end

.featuresObject



28
29
30
# File 'lib/feature_flipper/config.rb', line 28

def self.features
  @features
end

.features=(features) ⇒ Object



32
33
34
# File 'lib/feature_flipper/config.rb', line 32

def self.features=(features)
  @features = features
end

.get_state(feature_name) ⇒ Object



44
45
46
47
# File 'lib/feature_flipper/config.rb', line 44

def self.get_state(feature_name)
  feature = features[feature_name]
  feature ? feature[:state] : nil
end

.is_active?(feature_name, context = nil) ⇒ Boolean

Returns:



62
63
64
65
66
67
# File 'lib/feature_flipper/config.rb', line 62

def self.is_active?(feature_name, context = nil)
  ensure_config_is_loaded

  state = get_state(feature_name)
  active_state?(state, feature_name, context)
end

.path_to_fileObject



6
7
8
# File 'lib/feature_flipper/config.rb', line 6

def self.path_to_file
  @path_to_file
end

.path_to_file=(path_to_file) ⇒ Object



10
11
12
# File 'lib/feature_flipper/config.rb', line 10

def self.path_to_file=(path_to_file)
  @path_to_file = path_to_file
end

.reload_configObject



21
22
23
24
25
26
# File 'lib/feature_flipper/config.rb', line 21

def self.reload_config
  @features = {}
  @states   = {}

  @config_loaded = false
end

.statesObject



36
37
38
# File 'lib/feature_flipper/config.rb', line 36

def self.states
  @states
end

.states=(states) ⇒ Object



40
41
42
# File 'lib/feature_flipper/config.rb', line 40

def self.states=(states)
  @states = states
end