feature_flagger 0.6.1 → 0.7.0

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: 593d79dc09e9a02865628886d4022e520f27a242
4
- data.tar.gz: f5c6ee2a1f8447b7836b79bd98d3a15a81d532a0
3
+ metadata.gz: 2335ee9453cab0314c491603125c68e136828fa5
4
+ data.tar.gz: 60adb64eb0f1e03fb69108ea4de6cba3325fd9b2
5
5
  SHA512:
6
- metadata.gz: ce5467c236f0d9555243df327d1e6907e0baf3d5b59b8715c316cdc75adde0cf0c3028ce764c1a0440acd9ad45742b78936d11086526afa2df71551b7c93e07d
7
- data.tar.gz: 6a389ed49cd204a97db8bfa7094a51f69ab12494de805251707df25079c96ca9ad43563296b76329a3313292d2593ff4a656e98ebda14b0db88f4c035cf22ff6
6
+ metadata.gz: b111dedf8bfba2264a4e940408477c0e32fd97922f7e2109e90ef6b7ba19b2884ddf793bc7303eb1156b827eae525b44de20795f035b803789bfaa90bf67819b
7
+ data.tar.gz: 7e8602d4c7475a293af5a21ad79618f28b4c4b07a2a346a8732df1d0256416bffd246564800a96cb94007404e6715ca6492cb18c916c6da67e0e929cc0d6b0e2
data/README.md CHANGED
@@ -74,6 +74,18 @@ account.unrelease(:email_marketing, :new_email_flow)
74
74
  # If you try to check an inexistent rollout key it will raise an error.
75
75
  account.rollout?(:email_marketing, :new_email_flow)
76
76
  FeatureFlagger::KeyNotFoundError: ["account", "email_marketing", "new_email_flo"]
77
+
78
+ # Get an array with all released Account ids
79
+ Account.all_released_ids_for(:email_marketing, :new_email_flow)
80
+
81
+ # Releasing a feature to all accounts
82
+ Account.release_to_all(:email_marketing, :new_email_flow)
83
+
84
+ # Unreleasing a feature to all accounts
85
+ Account.unrelease_to_all(:email_marketing, :new_email_flow)
86
+
87
+ # Return an array with all features released for all
88
+ Account.released_features_to_all
77
89
  ```
78
90
 
79
91
  ## Contributing
@@ -9,7 +9,7 @@ require 'feature_flagger/configuration'
9
9
 
10
10
  module FeatureFlagger
11
11
  class << self
12
- def configure(&block)
12
+ def configure
13
13
  yield config if block_given?
14
14
  end
15
15
 
@@ -2,18 +2,24 @@ module FeatureFlagger
2
2
  class Control
3
3
  attr_reader :storage
4
4
 
5
+ RELEASED_FEATURES = 'released_features'
6
+
5
7
  def initialize(storage)
6
8
  @storage = storage
7
9
  end
8
10
 
9
11
  def rollout?(feature_key, resource_id)
10
- @storage.has_value?(feature_key, resource_id)
12
+ @storage.has_value?(RELEASED_FEATURES, feature_key) || @storage.has_value?(feature_key, resource_id)
11
13
  end
12
14
 
13
15
  def release(feature_key, resource_id)
14
16
  @storage.add(feature_key, resource_id)
15
17
  end
16
18
 
19
+ def release_to_all(feature_key)
20
+ @storage.add(RELEASED_FEATURES, feature_key)
21
+ end
22
+
17
23
  # <b>DEPRECATED:</b> Please use <tt>release</tt> instead.
18
24
  def release!(feature_key, resource_id)
19
25
  warn "[DEPRECATION] `release!` is deprecated. Please use `release` instead."
@@ -24,6 +30,10 @@ module FeatureFlagger
24
30
  @storage.remove(feature_key, resource_id)
25
31
  end
26
32
 
33
+ def unrelease_to_all(feature_key)
34
+ @storage.remove(RELEASED_FEATURES, feature_key)
35
+ end
36
+
27
37
  # <b>DEPRECATED:</b> Please use <tt>unrelease</tt> instead.
28
38
  def unrelease!(feature_key, resource_id)
29
39
  warn "[DEPRECATION] `unrelease!` is deprecated. Please use `unrelease` instead."
@@ -33,5 +43,9 @@ module FeatureFlagger
33
43
  def resource_ids(feature_key)
34
44
  @storage.all_values(feature_key)
35
45
  end
46
+
47
+ def released_features_to_all
48
+ @storage.all_values(RELEASED_FEATURES)
49
+ end
36
50
  end
37
51
  end
@@ -49,6 +49,20 @@ module FeatureFlagger
49
49
  FeatureFlagger.control.resource_ids(feature.key)
50
50
  end
51
51
 
52
+ def release_to_all(*feature_key)
53
+ feature = Feature.new(feature_key, rollout_resource_name)
54
+ FeatureFlagger.control.release_to_all(feature.key)
55
+ end
56
+
57
+ def unrelease_to_all(*feature_key)
58
+ feature = Feature.new(feature_key, rollout_resource_name)
59
+ FeatureFlagger.control.unrelease_to_all(feature.key)
60
+ end
61
+
62
+ def released_features_to_all
63
+ FeatureFlagger.control.released_features_to_all
64
+ end
65
+
52
66
  def rollout_resource_name
53
67
  klass_name = self.to_s
54
68
  klass_name.gsub!(/::/, '_')
@@ -1,3 +1,3 @@
1
1
  module FeatureFlagger
2
- VERSION = "0.6.1"
2
+ VERSION = "0.7.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feature_flagger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Sousa
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-10-18 00:00:00.000000000 Z
12
+ date: 2016-10-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis