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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 434b1224539eeb898620d2ab8955c3e09f9f3050
4
- data.tar.gz: 9cb1463434d02d535642491ccf47c8c639b054ff
3
+ metadata.gz: c95a74dd29e1ccbb38966d66e368870c9bbba2a3
4
+ data.tar.gz: 19b9861564074b57ec1c7e8f15080e15c9259379
5
5
  SHA512:
6
- metadata.gz: 0e83beff5c32c024b8e8a032aa1a7d298f36007ce3c7791e04c05deaf500d3d6424bad331e4622cfd5fe6a0570031264038cc9613f7eef564740d0f66a605996
7
- data.tar.gz: c7994cd5011b0a12650a7a9256862d5b16454a472be4876746eea695fd67b850d70643c35b561dfcbb6aac453f82a3d9663b18fbae187ae0e3514b57a70d4452
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!(:email_marketing, :new_email_flow)
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!(:email_marketing, :new_email_flow)
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.
@@ -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
- set_config
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
- @@config
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!(feature_key, resource_id)
13
+ def release(feature_key, resource_id)
14
14
  @storage.add(feature_key, resource_id)
15
15
  end
16
16
 
17
- def unrelease!(feature_key, resource_id)
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
@@ -2,7 +2,7 @@ module FeatureFlagger
2
2
  class Feature
3
3
  def initialize(feature_key, resource_name = nil)
4
4
  @feature_key = resolve_key(feature_key, resource_name)
5
- @doc = FeatureFlagger.config[:info]
5
+ @doc = FeatureFlagger.config.info
6
6
  fetch_data
7
7
  end
8
8
 
@@ -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!(feature.key, id)
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!(feature.key, id)
42
+ FeatureFlagger.control.unrelease(feature.key, id)
31
43
  end
32
44
 
33
45
  module ClassMethods
@@ -1,3 +1,3 @@
1
1
  module FeatureFlagger
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.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.5.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-17 00:00:00.000000000 Z
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