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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3a271eaf67a7a93bd229bd038363e9519cb0714e
4
- data.tar.gz: 691348e77ddf74622e9097f83257040416f43604
3
+ metadata.gz: 1920246ff590d0f98dfbd0ea0d4b44aa77fdbeef
4
+ data.tar.gz: 37b16f9dfced411a5096db6c8f766804486c96ab
5
5
  SHA512:
6
- metadata.gz: 178b8e912dd12aff7aa8a85b1703e8a303f8513e5ccadafaea3c8f904d49b63835634f36bb6629bd66d727879abdbf17acd58c7ab006f378fd3ee223b1779cb3
7
- data.tar.gz: 0f38529ce654a05049bace5c4b6ed2a40f45157e9c1d16495e2ea6fae5d15a7510c6d355a5ca298e0d4f6ada227d5cd512601fc5ff066eb920a78255b379721e
6
+ metadata.gz: bab19020f1f06e0474a453b27976e85e4658b518f72ede7a194be23aa14a94d6c4ce72df8be7eb8eddc992c06b1850cb2631697c9c4aae755aa31de79737cb4f
7
+ data.tar.gz: 0ef324317ccf528d5178a75adf9794a1427aae584dbc7cbf9e86c98ea32880a5d49ee59f14ea501e561f135c201a2327a330fcea5134ba3da29dd699b259f3ff
@@ -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 and not cache_is_stale(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
- if feature
52
- return enabled_for_user(feature, user_identifier)
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
 
@@ -1,3 +1,3 @@
1
1
  class Featureswitches
2
- VERSION = "0.8.2"
2
+ VERSION = "0.8.3"
3
3
  end
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.2
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-03-28 00:00:00.000000000 Z
11
+ date: 2016-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler