Module: Philiprehberger::FeatureFlag::Dependencies

Included in:
Philiprehberger::FeatureFlag
Defined in:
lib/philiprehberger/feature_flag/dependencies.rb

Instance Method Summary collapse

Instance Method Details

#dependencies_met?(flag, context = {}) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
27
# File 'lib/philiprehberger/feature_flag/dependencies.rb', line 21

def dependencies_met?(flag, context = {})
  dep = dependency_for(flag)
  return true if dep.nil?
  return false unless enabled?(dep, context: context)

  dependencies_met?(dep, context)
end

#dependency_for(flag) ⇒ Object



17
18
19
# File 'lib/philiprehberger/feature_flag/dependencies.rb', line 17

def dependency_for(flag)
  @dependencies&.dig(flag.to_sym)
end

#depends_on(flag, requires:) ⇒ Symbol

Declare that flag depends on requires. A dependent flag is only enabled when every flag in its dependency chain is also enabled.

Parameters:

  • flag (Symbol, String)

    dependent flag name

  • requires (Symbol, String)

    parent flag name

Returns:

  • (Symbol)

    the normalized parent name



12
13
14
15
# File 'lib/philiprehberger/feature_flag/dependencies.rb', line 12

def depends_on(flag, requires:)
  @dependencies ||= {}
  @dependencies[flag.to_sym] = requires.to_sym
end

#reset_dependencies!Object



29
30
31
# File 'lib/philiprehberger/feature_flag/dependencies.rb', line 29

def reset_dependencies!
  @dependencies = nil
end