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