featureswitches 0.8.2 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|