this_feature-adapters-flipper 0.5.0 → 0.6.1

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
  SHA256:
3
- metadata.gz: '0847ea9efa6fbb2220fde21f3ceb9bc0afc2ab346cdad21bc31baeba8b63be16'
4
- data.tar.gz: 9ab147e60b74ce5c218b774faea6ab4cf42b22b953527cfd6ac98dacd0d185e2
3
+ metadata.gz: 59fad6c074fe4555362a332da9c2be41ee793da92a4c4d4b9569b5dcc02043df
4
+ data.tar.gz: d73ef69e4524b58b890db551f63caee673bb66b1e87aaef0f260951a1e7d0c1c
5
5
  SHA512:
6
- metadata.gz: 5e80169640735a7f5cf5b1cf914a7151d1f7141a130d85c1e1db28b9bf12d6c7283852460a4c670687b4590931798bc7ebe1f650b0ef931fb4ed25a35a712165
7
- data.tar.gz: 9d41296adb7c33692ca93244a0debe2470cfb8a4322dd5d598c0f4578ab53e4600c333d22786616c7c776b130000a608c50cc7f6450fe7e3e008b06b7f58db32
6
+ metadata.gz: aaaa6a00c083509395ee5c21acfc6475cc3291273d41a3d3d16026c985680444e02ed3000a26232e3eebf577adb0a9a1ae01344ddf39fce5c7987130c7bce575
7
+ data.tar.gz: a8e3e946918977ae9c34af2233bd46efcab168f6e54381b5ceda0418f03044b01554cd378ad1a04ac303f1c9d812601eda662fd93e64cfc1aedcc1f7cd6febd1
data/Gemfile.lock CHANGED
@@ -1,55 +1,58 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- this_feature (0.5.0)
5
- this_feature-adapters-flipper (0.5.0)
4
+ this_feature (0.6.1)
5
+ this_feature-adapters-flipper (0.6.1)
6
6
  flipper (~> 0.16)
7
7
  flipper-active_record (~> 0.16)
8
8
  this_feature
9
- this_feature-adapters-split_io (0.5.0)
9
+ this_feature-adapters-split_io (0.6.1)
10
10
  splitclient-rb
11
11
  this_feature
12
12
 
13
13
  GEM
14
14
  remote: https://rubygems.org/
15
15
  specs:
16
- activemodel (6.0.3.2)
17
- activesupport (= 6.0.3.2)
18
- activerecord (6.0.3.2)
19
- activemodel (= 6.0.3.2)
20
- activesupport (= 6.0.3.2)
21
- activesupport (6.0.3.2)
16
+ activemodel (6.1.3)
17
+ activesupport (= 6.1.3)
18
+ activerecord (6.1.3)
19
+ activemodel (= 6.1.3)
20
+ activesupport (= 6.1.3)
21
+ activesupport (6.1.3)
22
22
  concurrent-ruby (~> 1.0, >= 1.0.2)
23
- i18n (>= 0.7, < 2)
24
- minitest (~> 5.1)
25
- tzinfo (~> 1.1)
26
- zeitwerk (~> 2.2, >= 2.2.2)
23
+ i18n (>= 1.6, < 2)
24
+ minitest (>= 5.1)
25
+ tzinfo (~> 2.0)
26
+ zeitwerk (~> 2.3)
27
27
  byebug (11.1.2)
28
28
  coderay (1.1.2)
29
- concurrent-ruby (1.1.6)
29
+ concurrent-ruby (1.1.8)
30
30
  connection_pool (2.2.3)
31
31
  database_cleaner (1.8.4)
32
32
  database_cleaner-active_record (1.8.0)
33
33
  activerecord
34
34
  database_cleaner (~> 1.8.0)
35
35
  diff-lcs (1.3)
36
- faraday (1.0.1)
36
+ faraday (1.3.0)
37
+ faraday-net_http (~> 1.0)
37
38
  multipart-post (>= 1.2, < 3)
38
- flipper (0.19.0)
39
- flipper-active_record (0.19.0)
39
+ ruby2_keywords
40
+ faraday-net_http (1.0.1)
41
+ flipper (0.20.3)
42
+ flipper-active_record (0.20.3)
40
43
  activerecord (>= 5.0, < 7)
41
- flipper (~> 0.19.0)
42
- gem-release (2.1.1)
44
+ flipper (~> 0.20.3)
45
+ gem-release (2.2.1)
43
46
  hitimes (1.3.1)
44
- i18n (1.8.5)
47
+ i18n (1.8.9)
45
48
  concurrent-ruby (~> 1.0)
46
- json (2.3.1)
49
+ json (2.5.1)
47
50
  jwt (2.2.2)
48
51
  lru_redux (1.1.0)
49
52
  method_source (1.0.0)
50
- minitest (5.14.1)
53
+ minitest (5.14.4)
51
54
  multipart-post (2.1.1)
52
- net-http-persistent (4.0.0)
55
+ net-http-persistent (4.0.1)
53
56
  connection_pool (~> 2.2)
54
57
  pry (0.13.1)
55
58
  coderay (~> 1.1)
@@ -58,7 +61,7 @@ GEM
58
61
  byebug (~> 11.0)
59
62
  pry (~> 0.13.0)
60
63
  rake (13.0.1)
61
- redis (4.2.2)
64
+ redis (4.2.5)
62
65
  rspec (3.9.0)
63
66
  rspec-core (~> 3.9.0)
64
67
  rspec-expectations (~> 3.9.0)
@@ -72,23 +75,24 @@ GEM
72
75
  diff-lcs (>= 1.2.0, < 2.0)
73
76
  rspec-support (~> 3.9.0)
74
77
  rspec-support (3.9.2)
78
+ ruby2_keywords (0.0.4)
75
79
  socketry (0.5.1)
76
80
  hitimes (~> 1.2)
77
- splitclient-rb (7.1.3)
81
+ splitclient-rb (7.2.3)
78
82
  concurrent-ruby (~> 1.0)
79
83
  faraday (>= 0.8)
80
84
  json (>= 1.8)
81
85
  jwt (>= 2.2.1)
82
86
  lru_redux
83
87
  net-http-persistent (>= 2.9)
84
- redis (>= 3.2)
88
+ redis (>= 4.2.2)
85
89
  socketry (~> 0.5.1)
86
90
  thread_safe (>= 0.3)
87
91
  sqlite3 (1.4.2)
88
92
  thread_safe (0.3.6)
89
- tzinfo (1.2.7)
90
- thread_safe (~> 0.1)
91
- zeitwerk (2.4.0)
93
+ tzinfo (2.0.4)
94
+ concurrent-ruby (~> 1.0)
95
+ zeitwerk (2.4.2)
92
96
 
93
97
  PLATFORMS
94
98
  ruby
data/README.md CHANGED
@@ -63,7 +63,7 @@ These adapters do behave slightly differently, so make sure to read the followin
63
63
 
64
64
  - [Flipper adapter](./docs/flipper.md)
65
65
  - [Split.io adapter](./docs/splitio.md)
66
- - [Memory adapter](./docs/memory.md) - **very helpful to use in tests**
66
+ - [Memory adapter](./docs/memory.md) - **designed for use in tests**
67
67
 
68
68
  ## Development
69
69
 
@@ -19,17 +19,11 @@ class ThisFeature
19
19
  end
20
20
 
21
21
  def on?(flag_name, context: nil, data: {})
22
- return unless present?(flag_name)
23
-
24
22
  client[flag_name].enabled?(*[context].compact)
25
23
  end
26
24
 
27
25
  def off?(flag_name, context: nil, data: {})
28
- on_result = on?(flag_name, context: context)
29
-
30
- return if on_result.nil?
31
-
32
- !on_result
26
+ !on?(flag_name, context: context)
33
27
  end
34
28
 
35
29
  private
@@ -15,7 +15,7 @@ class ThisFeature
15
15
  end
16
16
 
17
17
  def on?(flag_name, context: nil, data: {})
18
- return unless present?(flag_name)
18
+ return false unless present?(flag_name)
19
19
 
20
20
  flag_data = storage[flag_name]
21
21
 
@@ -28,11 +28,11 @@ class ThisFeature
28
28
  end
29
29
 
30
30
  def off?(flag_name, context: nil, data: {})
31
- on_result = on?(flag_name, context: context)
32
-
33
- return if on_result.nil?
31
+ !on?(flag_name, context: context, data: data)
32
+ end
34
33
 
35
- !on_result
34
+ def control?(flag_name, **kwargs)
35
+ !present?(flag_name)
36
36
  end
37
37
 
38
38
  def on!(flag_name, context: nil, data: {})
@@ -6,8 +6,9 @@ class ThisFeature
6
6
  # used as treatment key when none is given, it's required by split
7
7
  UNDEFINED_KEY = 'undefined_key'
8
8
 
9
- def initialize(client: nil)
9
+ def initialize(client: nil, context_key_method: nil)
10
10
  @client = client || default_split_client
11
+ @context_key_method = context_key_method
11
12
 
12
13
  @client.block_until_ready
13
14
  end
@@ -30,18 +31,18 @@ class ThisFeature
30
31
 
31
32
  private
32
33
 
33
- attr_reader :client
34
+ attr_reader :client, :context_key_method
34
35
 
35
36
  def treatment(flag_name, context: UNDEFINED_KEY, data: {})
36
- key = if context.nil?
37
- UNDEFINED_KEY
38
- elsif context.respond_to?(:to_s)
39
- context.to_s
40
- else
41
- context
42
- end
43
-
44
- client.get_treatment(key, flag_name, data)
37
+ client.get_treatment(context_key(context), flag_name, data)
38
+ end
39
+
40
+ def context_key(context)
41
+ return UNDEFINED_KEY if context.nil? || context.eql?(UNDEFINED_KEY)
42
+ return context.send(context_key_method) unless context_key_method.nil?
43
+ return context.to_s if context.respond_to?(:to_s)
44
+
45
+ context
45
46
  end
46
47
 
47
48
  def default_split_client
@@ -7,6 +7,8 @@ class ThisFeature
7
7
  end
8
8
 
9
9
  def validate_adapters!
10
+ raise(NoAdaptersError.new) unless adapters.any?
11
+
10
12
  adapters.each do |adapter|
11
13
  raise BadAdapterError.new(adapter) unless adapter.class < Adapters::Base
12
14
  end
@@ -14,9 +14,9 @@ class ThisFeature
14
14
  end
15
15
  end
16
16
 
17
- class NoWriteAdapter < Error
17
+ class NoAdaptersError < Error
18
18
  def initialize
19
- super("Use the `ThisFeature.write_adapter=` setter before calling #enable or #disable")
19
+ super("No adapters configured.")
20
20
  end
21
21
  end
22
22
 
@@ -1,3 +1,3 @@
1
1
  class ThisFeature
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.1"
3
3
  end
data/memory CHANGED
Binary file
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: this_feature-adapters-flipper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Pleaner
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-25 00:00:00.000000000 Z
11
+ date: 2021-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: this_feature
@@ -78,6 +78,7 @@ files:
78
78
  - lib/this_feature/flag.rb
79
79
  - lib/this_feature/version.rb
80
80
  - memory
81
+ - this_feature-0.6.0.gem
81
82
  - this_feature-adapters-flipper.gemspec
82
83
  - this_feature-adapters-split_io.gemspec
83
84
  - this_feature.gemspec
@@ -85,7 +86,7 @@ homepage: http://hover.to
85
86
  licenses:
86
87
  - MIT
87
88
  metadata: {}
88
- post_install_message:
89
+ post_install_message:
89
90
  rdoc_options: []
90
91
  require_paths:
91
92
  - lib
@@ -100,8 +101,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
101
  - !ruby/object:Gem::Version
101
102
  version: '0'
102
103
  requirements: []
103
- rubygems_version: 3.0.3
104
- signing_key:
104
+ rubygems_version: 3.1.2
105
+ signing_key:
105
106
  specification_version: 4
106
107
  summary: "[summary]"
107
108
  test_files: []