class FeatureFlagger::Feature

Public Class Methods

new(feature_key, resource_name = nil) click to toggle source
# File lib/feature_flagger/feature.rb, line 3
def initialize(feature_key, resource_name = nil)
  @feature_key = resolve_key(feature_key, resource_name)
  @doc = FeatureFlagger.config.info
  fetch_data
end

Public Instance Methods

description() click to toggle source
# File lib/feature_flagger/feature.rb, line 9
def description
  @data['description']
end
key() click to toggle source
# File lib/feature_flagger/feature.rb, line 13
def key
  @feature_key.join(':')
end

Private Instance Methods

fetch_data() click to toggle source
# File lib/feature_flagger/feature.rb, line 25
def fetch_data
  @data ||= find_value(@doc, *@feature_key)
  raise FeatureFlagger::KeyNotFoundError.new(@feature_key) if @data.nil?
  @data
end
find_value(hash, key, *tail) click to toggle source
# File lib/feature_flagger/feature.rb, line 31
def find_value(hash, key, *tail)
  value = hash[key]

  if value.nil? || tail.empty?
    value
  else
    find_value(value, *tail)
  end
end
resolve_key(feature_key, resource_name) click to toggle source
# File lib/feature_flagger/feature.rb, line 19
def resolve_key(feature_key, resource_name)
  key = Array(feature_key).flatten
  key.insert(0, resource_name) if resource_name
  key.map(&:to_s)
end