Module: FeatureCop

Includes:
Blacklist, Sampling, Toggle, Whitelist
Defined in:
lib/feature_cop.rb,
lib/feature_cop/toggle.rb,
lib/feature_cop/version.rb,
lib/feature_cop/sampling.rb,
lib/feature_cop/blacklist.rb,
lib/feature_cop/whitelist.rb

Defined Under Namespace

Modules: Blacklist, Sampling, Toggle, Whitelist

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Methods included from Toggle

included

Methods included from Sampling

included

Methods included from Blacklist

included

Methods included from Whitelist

included

Class Method Details

.allows?(feature, identifier = nil, options = {}) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
# File 'lib/feature_cop.rb', line 21

def self.allows?(feature, identifier = nil, options = {})
  feature_status = ENV["#{feature.to_s.upcase}"]
  return false if feature_status.nil? 
  self.method(feature_status.downcase).call(feature.to_s, identifier.to_s, options)
end

.as_json(identifier = nil) ⇒ Object



47
48
49
50
51
52
53
# File 'lib/feature_cop.rb', line 47

def self.as_json(identifier = nil)
  feature_set = {}
  features.each_pair do |feature, setting|
    feature_set[feature.downcase.camelize(:lower)] = self.method(setting.downcase).call(feature, identifier)
  end
  feature_set
end

.envObject



27
28
29
# File 'lib/feature_cop.rb', line 27

def self.env
  @env ||= ENV["RAILS_ENV"] || ENV["RACK_ENV"] || ENV["APP_ENV"] || ENV["APP_ENV"] || "development"
end

.featuresObject



31
32
33
# File 'lib/feature_cop.rb', line 31

def self.features
  @features ||= self.set_features
end

.reset_featuresObject



35
36
37
# File 'lib/feature_cop.rb', line 35

def self.reset_features
  @features = self.set_features
end

.set_featuresObject



39
40
41
42
43
44
45
# File 'lib/feature_cop.rb', line 39

def self.set_features
  features = {}
  ENV.each_pair do |key, value|
    features[key] = value if key.end_with?("_FEATURE")
  end
  return features
end

.to_json(identifier = nil) ⇒ Object



55
56
57
# File 'lib/feature_cop.rb', line 55

def self.to_json(identifier = nil)
  self.as_json(identifier).to_json
end