feature_flagger 0.5.0 → 0.6.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 +4 -4
- data/README.md +2 -2
- data/lib/feature_flagger.rb +4 -37
- data/lib/feature_flagger/configuration.rb +20 -0
- data/lib/feature_flagger/control.rb +14 -2
- data/lib/feature_flagger/feature.rb +1 -1
- data/lib/feature_flagger/model.rb +14 -2
- data/lib/feature_flagger/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c95a74dd29e1ccbb38966d66e368870c9bbba2a3
|
4
|
+
data.tar.gz: 19b9861564074b57ec1c7e8f15080e15c9259379
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d942d7da67e349ebeb8bc0eac07896a19c91bbce01deee210044f07af78184b12d6a9f4ceddd255c2079f37190130c2906cf54c7e6f78970b43904fab1274050
|
7
|
+
data.tar.gz: 8bac72b54148363152b8d2d092e1cea26976945dfed64797b0d83e0f412c0598cdaeebb8454ee22fdf820a62a90853c32bab4387fa4fd6ba90ec2cd707a7a036
|
data/README.md
CHANGED
@@ -60,7 +60,7 @@ end
|
|
60
60
|
account = Account.first
|
61
61
|
|
62
62
|
# Release feature for account
|
63
|
-
account.release
|
63
|
+
account.release(:email_marketing, :new_email_flow)
|
64
64
|
#=> true
|
65
65
|
|
66
66
|
# Check feature for a given account
|
@@ -68,7 +68,7 @@ account.rollout?(:email_marketing, :new_email_flow)
|
|
68
68
|
#=> true
|
69
69
|
|
70
70
|
# Remove feature for given account
|
71
|
-
account.unrelease
|
71
|
+
account.unrelease(:email_marketing, :new_email_flow)
|
72
72
|
#=> true
|
73
73
|
|
74
74
|
# If you try to check an inexistent rollout key it will raise an error.
|
data/lib/feature_flagger.rb
CHANGED
@@ -5,53 +5,20 @@ require 'feature_flagger/storage/redis'
|
|
5
5
|
require 'feature_flagger/control'
|
6
6
|
require 'feature_flagger/model'
|
7
7
|
require 'feature_flagger/feature'
|
8
|
+
require 'feature_flagger/configuration'
|
8
9
|
|
9
10
|
module FeatureFlagger
|
10
11
|
class << self
|
11
12
|
def configure(&block)
|
12
|
-
|
13
|
-
yield self if block_given?
|
13
|
+
yield config if block_given?
|
14
14
|
end
|
15
15
|
|
16
|
-
# TODO: rename to just _config_.
|
17
16
|
def config
|
18
|
-
@@
|
17
|
+
@@configuration ||= Configuration.new
|
19
18
|
end
|
20
19
|
|
21
20
|
def control
|
22
|
-
@@control ||= Control.new(storage)
|
23
|
-
end
|
24
|
-
|
25
|
-
def storage=(storage)
|
26
|
-
set_config
|
27
|
-
@@config[:storage] = storage
|
28
|
-
end
|
29
|
-
|
30
|
-
def storage
|
31
|
-
set_config
|
32
|
-
@@config[:storage]
|
33
|
-
end
|
34
|
-
|
35
|
-
private
|
36
|
-
|
37
|
-
def set_config
|
38
|
-
@@config ||= {}
|
39
|
-
@@config[:storage] ||= default_client
|
40
|
-
|
41
|
-
# TODO: Provide a Rake to generate initial YAML file
|
42
|
-
# for new projects.
|
43
|
-
|
44
|
-
if defined?(Rails)
|
45
|
-
@@config[:yaml_filepath] ||= "#{Rails.root}/config/rollout.yml"
|
46
|
-
end
|
47
|
-
|
48
|
-
if file_path = @@config[:yaml_filepath]
|
49
|
-
@@config[:info] ||= YAML.load_file(file_path)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def default_client
|
54
|
-
Storage::Redis.default_client
|
21
|
+
@@control ||= Control.new(config.storage)
|
55
22
|
end
|
56
23
|
end
|
57
24
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module FeatureFlagger
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :storage, :yaml_filepath
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@storage ||= Storage::Redis.default_client
|
7
|
+
@yaml_filepath ||= default_yaml_filepath
|
8
|
+
end
|
9
|
+
|
10
|
+
def info
|
11
|
+
@info ||= YAML.load_file(yaml_filepath) if yaml_filepath
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def default_yaml_filepath
|
17
|
+
"#{Rails.root}/config/rollout.yml" if defined?(Rails)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -10,14 +10,26 @@ module FeatureFlagger
|
|
10
10
|
@storage.has_value?(feature_key, resource_id)
|
11
11
|
end
|
12
12
|
|
13
|
-
def release
|
13
|
+
def release(feature_key, resource_id)
|
14
14
|
@storage.add(feature_key, resource_id)
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
# <b>DEPRECATED:</b> Please use <tt>release</tt> instead.
|
18
|
+
def release!(feature_key, resource_id)
|
19
|
+
warn "[DEPRECATION] `release!` is deprecated. Please use `release` instead."
|
20
|
+
release(feature_key, resource_id)
|
21
|
+
end
|
22
|
+
|
23
|
+
def unrelease(feature_key, resource_id)
|
18
24
|
@storage.remove(feature_key, resource_id)
|
19
25
|
end
|
20
26
|
|
27
|
+
# <b>DEPRECATED:</b> Please use <tt>unrelease</tt> instead.
|
28
|
+
def unrelease!(feature_key, resource_id)
|
29
|
+
warn "[DEPRECATION] `unrelease!` is deprecated. Please use `unrelease` instead."
|
30
|
+
unrelease(feature_key, resource_id)
|
31
|
+
end
|
32
|
+
|
21
33
|
def resource_ids(feature_key)
|
22
34
|
@storage.all_values(feature_key)
|
23
35
|
end
|
@@ -18,16 +18,28 @@ module FeatureFlagger
|
|
18
18
|
FeatureFlagger.control.rollout?(feature.key, id)
|
19
19
|
end
|
20
20
|
|
21
|
+
# <b>DEPRECATED:</b> Please use <tt>release</tt> instead.
|
21
22
|
def release!(*feature_key)
|
23
|
+
warn "[DEPRECATION] `release!` is deprecated. Please use `release` instead."
|
24
|
+
release(*feature_key)
|
25
|
+
end
|
26
|
+
|
27
|
+
def release(*feature_key)
|
22
28
|
resource_name = self.class.rollout_resource_name
|
23
29
|
feature = Feature.new(feature_key, resource_name)
|
24
|
-
FeatureFlagger.control.release
|
30
|
+
FeatureFlagger.control.release(feature.key, id)
|
25
31
|
end
|
26
32
|
|
33
|
+
# <b>DEPRECATED:</b> Please use <tt>unrelease</tt> instead.
|
27
34
|
def unrelease!(*feature_key)
|
35
|
+
warn "[DEPRECATION] `unrelease!` is deprecated. Please use `unrelease` instead."
|
36
|
+
unrelease(*feature_key)
|
37
|
+
end
|
38
|
+
|
39
|
+
def unrelease(*feature_key)
|
28
40
|
resource_name = self.class.rollout_resource_name
|
29
41
|
feature = Feature.new(feature_key, resource_name)
|
30
|
-
FeatureFlagger.control.unrelease
|
42
|
+
FeatureFlagger.control.unrelease(feature.key, id)
|
31
43
|
end
|
32
44
|
|
33
45
|
module ClassMethods
|
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.
|
4
|
+
version: 0.6.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-09-
|
12
|
+
date: 2016-09-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redis
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- MIT-LICENSE
|
107
107
|
- README.md
|
108
108
|
- lib/feature_flagger.rb
|
109
|
+
- lib/feature_flagger/configuration.rb
|
109
110
|
- lib/feature_flagger/control.rb
|
110
111
|
- lib/feature_flagger/feature.rb
|
111
112
|
- lib/feature_flagger/model.rb
|