featureswitches 0.8.2 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/featureswitches.rb +37 -6
- data/lib/featureswitches/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1920246ff590d0f98dfbd0ea0d4b44aa77fdbeef
|
4
|
+
data.tar.gz: 37b16f9dfced411a5096db6c8f766804486c96ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bab19020f1f06e0474a453b27976e85e4658b518f72ede7a194be23aa14a94d6c4ce72df8be7eb8eddc992c06b1850cb2631697c9c4aae755aa31de79737cb4f
|
7
|
+
data.tar.gz: 0ef324317ccf528d5178a75adf9794a1427aae584dbc7cbf9e86c98ea32880a5d49ee59f14ea501e561f135c201a2327a330fcea5134ba3da29dd699b259f3ff
|
data/lib/featureswitches.rb
CHANGED
@@ -44,14 +44,27 @@ class Featureswitches
|
|
44
44
|
|
45
45
|
def is_enabled(feature_key, user_identifier=nil, default=false)
|
46
46
|
feature = @cache[feature_key]
|
47
|
-
if feature
|
48
|
-
return enabled_for_user(feature, user_identifier)
|
49
|
-
else
|
47
|
+
if not feature or cache_is_stale(feature)
|
50
48
|
feature = get_feature(feature_key)
|
51
|
-
|
52
|
-
|
49
|
+
end
|
50
|
+
|
51
|
+
if feature
|
52
|
+
result = enabled_for_user(feature, user_identifier)
|
53
|
+
|
54
|
+
if not result and feature['enabled'] == true and feature['rollout_progress'] < feature['rollout_target']
|
55
|
+
enabled = get_feature_enabled(feature_key, user_identifier)
|
56
|
+
|
57
|
+
if enabled == true and @cache_timeout > 0
|
58
|
+
feature['include_users'].push(user_identifier)
|
59
|
+
@cache[feature['feature_key']] = feature
|
60
|
+
end
|
61
|
+
|
62
|
+
return enabled
|
53
63
|
end
|
64
|
+
|
65
|
+
return result
|
54
66
|
end
|
67
|
+
|
55
68
|
return default
|
56
69
|
end
|
57
70
|
|
@@ -106,6 +119,22 @@ class Featureswitches
|
|
106
119
|
return nil
|
107
120
|
end
|
108
121
|
|
122
|
+
def get_feature_enabled(feature_key, user_identifier)
|
123
|
+
endpoint = 'feature/enabled'
|
124
|
+
params = {
|
125
|
+
'feature_key' => feature_key,
|
126
|
+
'user_identifier' => user_identifier
|
127
|
+
}
|
128
|
+
|
129
|
+
response = api_request(endpoint, params)
|
130
|
+
|
131
|
+
if response[:success]
|
132
|
+
return response[:data]['enabled']
|
133
|
+
end
|
134
|
+
|
135
|
+
return false
|
136
|
+
end
|
137
|
+
|
109
138
|
def enabled_for_user(feature, user_identifier)
|
110
139
|
if feature['enabled'] and user_identifier
|
111
140
|
if feature['include_users'].length > 0
|
@@ -120,8 +149,10 @@ class Featureswitches
|
|
120
149
|
else
|
121
150
|
return true
|
122
151
|
end
|
152
|
+
elsif feature['rollout_target'] > 0
|
153
|
+
return false
|
123
154
|
end
|
124
|
-
elsif not user_identifier and (feature['include_users'].length > 0 or feature['exclude_users'].length > 0)
|
155
|
+
elsif not user_identifier and (feature['rollout_target'] > 0 or feature['include_users'].length > 0 or feature['exclude_users'].length > 0)
|
125
156
|
return false
|
126
157
|
end
|
127
158
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: featureswitches
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Weirauch
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|