feature_flagger 0.6.1 → 0.7.0

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