Module: FeatureCop
- Includes:
- Blacklist, Whitelist
- Defined in:
- lib/feature_cop.rb,
lib/feature_cop/version.rb,
lib/feature_cop/blacklist.rb,
lib/feature_cop/whitelist.rb
Defined Under Namespace
Modules: Blacklist, Whitelist
Constant Summary
collapse
- VERSION =
"0.1.3"
Class Method Summary
collapse
Methods included from Blacklist
included
Methods included from Whitelist
included
Class Method Details
.allows?(feature, identifier = nil, opts = {}) ⇒ Boolean
17
18
19
20
21
|
# File 'lib/feature_cop.rb', line 17
def self.allows?(feature, identifier = nil, opts = {})
feature_status = ENV["#{feature.to_s.upcase}"]
return false if feature_status.nil?
self.method(feature_status.downcase).call(identifier)
end
|
.disabled(identifier) ⇒ Object
27
28
29
|
# File 'lib/feature_cop.rb', line 27
def self.disabled(identifier)
false
end
|
.enabled(identifier) ⇒ Object
23
24
25
|
# File 'lib/feature_cop.rb', line 23
def self.enabled(identifier)
true
end
|
.env ⇒ Object
31
32
33
|
# File 'lib/feature_cop.rb', line 31
def self.env
@env ||= ENV["RAILS_ENV"] || ENV["RACK_ENV"] || ENV["APP_ENV"] || ENV["APP_ENV"] || "development"
end
|
.features ⇒ Object
35
36
37
|
# File 'lib/feature_cop.rb', line 35
def self.features
@features ||= self.set_features
end
|
.reset_features ⇒ Object
39
40
41
|
# File 'lib/feature_cop.rb', line 39
def self.reset_features
@features = self.set_features
end
|
.sample10(identifier) ⇒ Object
43
44
45
46
47
|
# File 'lib/feature_cop.rb', line 43
def self.sample10(identifier)
return true if whitelisted?(identifier)
return false if blacklisted?(identifier)
identifier.bytes.sum % 10 == 0
end
|
.sample30(identifier) ⇒ Object
49
50
51
52
53
|
# File 'lib/feature_cop.rb', line 49
def self.sample30(identifier)
return true if whitelisted?(identifier)
return false if blacklisted?(identifier)
identifier.bytes.sum % 3 == 0
end
|
.sample50(identifier) ⇒ Object
55
56
57
58
59
|
# File 'lib/feature_cop.rb', line 55
def self.sample50(identifier)
return true if whitelisted?(identifier)
return false if blacklisted?(identifier)
identifier.bytes.sum.odd?
end
|
.set_features ⇒ Object
61
62
63
64
65
66
67
|
# File 'lib/feature_cop.rb', line 61
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
69
70
71
72
73
74
75
|
# File 'lib/feature_cop.rb', line 69
def self.to_json(identifier = nil)
feature_set = {}
features.each_pair do |key, value|
feature_set[key.downcase.camelize(:lower)] = self.method(value.downcase).call(identifier)
end
feature_set.to_json
end
|