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 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