Module: Flagship

Defined in:
lib/flagship.rb,
lib/flagship/version.rb

Defined Under Namespace

Classes: Context, Dsl, Feature, Features, Flagset, FlagsetsContainer, NoFlagsetSelectedError

Constant Summary collapse

VERSION =
"0.6.0"

Class Method Summary collapse

Class Method Details

.clear_stateObject



61
62
63
64
65
# File 'lib/flagship.rb', line 61

def clear_state
  @default_flagsts_container = nil
  @current_flagset = nil
  @default_context && @default_context.clear
end

.current_flagsetObject



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

def current_flagset
  @current_flagset or raise NoFlagsetSelectedError.new('No flagset is selected')
end

.default_contextObject



57
58
59
# File 'lib/flagship.rb', line 57

def default_context
  @default_context ||= ::Flagship::Context.new
end

.default_flagsets_containerObject



49
50
51
# File 'lib/flagship.rb', line 49

def default_flagsets_container
  @default_flagsts_container ||= ::Flagship::FlagsetsContainer.new
end

.define(key, options = {}, &block) ⇒ Object



13
14
15
16
17
# File 'lib/flagship.rb', line 13

def define(key, options = {}, &block)
  context = self.default_context
  base = options[:extend] ? self.get_flagset(options[:extend]) : nil
  default_flagsets_container.add ::Flagship::Dsl.new(key, context, base, &block).flagset
end

.enabled?(key) ⇒ Boolean

Returns:

  • (Boolean)


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

def enabled?(key)
  current_flagset.enabled?(key)
end

.featuresObject



41
42
43
# File 'lib/flagship.rb', line 41

def features
  current_flagset.features
end

.get_flagset(key) ⇒ Object



45
46
47
# File 'lib/flagship.rb', line 45

def get_flagset(key)
  default_flagsets_container.get(key)
end

.select_flagset(key) ⇒ Object



37
38
39
# File 'lib/flagship.rb', line 37

def select_flagset(key)
  @current_flagset = default_flagsets_container.get(key)
end

.set_context(key_or_hash, value = nil) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/flagship.rb', line 23

def set_context(key_or_hash, value=nil)
  if key_or_hash.is_a?(Hash)
    key_or_hash.each { |k, v| default_context.__set(k, v) }
  else
    default_context.__set(key_or_hash, value)
  end
end

.with_context(values, &block) ⇒ Object



31
32
33
34
35
# File 'lib/flagship.rb', line 31

def with_context(values, &block)
  default_context.with_values values do
    block.call
  end
end