module FeatureFlags::Features

Attributes

flags[RW]

Public Class Methods

all_defaults() click to toggle source
# File lib/featureflags/features.rb, line 20
def self.all_defaults
  @flags || {}
end
all_enabled?(*names) click to toggle source
# File lib/featureflags/features.rb, line 34
def self.all_enabled?(*names)
  names.flatten.all?{ |name| enabled?(name) }
end
any_enabled?(*names) click to toggle source
# File lib/featureflags/features.rb, line 30
def self.any_enabled?(*names)
  names.flatten.any?{ |name| enabled?(name) }
end
enabled?(name) click to toggle source
# File lib/featureflags/features.rb, line 9
def self.enabled?(name)
  !!flag(name)
end
enabled_by_default() click to toggle source

return all features which are enabled by default i.e. not-false, regardless of environment variables

# File lib/featureflags/features.rb, line 26
def self.enabled_by_default
  @flags.select{|k,v| v}.keys
end
env_ize(name) click to toggle source
# File lib/featureflags/features.rb, line 38
def self.env_ize(name)
  name.to_s.upcase.gsub(/[^A-Z0-9_]+/, '_')
end
flag(name) click to toggle source

Could be useful to use this directly for variants / AB testing, etc e.g. FeatureFlags::Features.flag(‘homepage.splash_form’)

# File lib/featureflags/features.rb, line 16
def self.flag(name)
  ENV[env_ize(name)] || @flags[name.to_sym]
end
init!(flags=nil) click to toggle source
# File lib/featureflags/features.rb, line 5
def self.init!(flags=nil)
  @flags = load_flags!(flags)
end

Protected Class Methods

load_flags!(defaults={}) click to toggle source

NOTE: thread-safety??

# File lib/featureflags/features.rb, line 45
def self.load_flags!(defaults={})
  @flags = {}
  if defaults
    defaults.each do |key, value|
      @flags[key] = value
    end
  end
end