feature_flagger 0.5.0 → 0.6.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: 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