splitclient-rb 6.4.1.pre.rc3-java → 7.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.txt +15 -1
  3. data/Detailed-README.md +9 -21
  4. data/NEWS +3 -0
  5. data/lib/splitclient-rb.rb +2 -1
  6. data/lib/splitclient-rb/cache/adapters/cache_adapter.rb +3 -3
  7. data/lib/splitclient-rb/cache/repositories/events/memory_repository.rb +5 -4
  8. data/lib/splitclient-rb/cache/repositories/events/redis_repository.rb +4 -3
  9. data/lib/splitclient-rb/cache/repositories/events_repository.rb +10 -9
  10. data/lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb +7 -6
  11. data/lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb +5 -4
  12. data/lib/splitclient-rb/cache/repositories/impressions_repository.rb +9 -8
  13. data/lib/splitclient-rb/cache/repositories/metrics/memory_repository.rb +3 -2
  14. data/lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb +5 -4
  15. data/lib/splitclient-rb/cache/repositories/metrics_repository.rb +6 -4
  16. data/lib/splitclient-rb/cache/repositories/repository.rb +7 -2
  17. data/lib/splitclient-rb/cache/repositories/segments_repository.rb +6 -5
  18. data/lib/splitclient-rb/cache/repositories/splits_repository.rb +56 -14
  19. data/lib/splitclient-rb/cache/routers/impression_router.rb +5 -4
  20. data/lib/splitclient-rb/cache/senders/events_sender.rb +7 -6
  21. data/lib/splitclient-rb/cache/senders/impressions_sender.rb +10 -9
  22. data/lib/splitclient-rb/cache/senders/metrics_sender.rb +9 -8
  23. data/lib/splitclient-rb/cache/stores/sdk_blocker.rb +19 -10
  24. data/lib/splitclient-rb/cache/stores/segment_store.rb +15 -28
  25. data/lib/splitclient-rb/cache/stores/split_store.rb +13 -15
  26. data/lib/splitclient-rb/clients/localhost_split_client.rb +8 -7
  27. data/lib/splitclient-rb/clients/split_client.rb +65 -35
  28. data/lib/splitclient-rb/engine/api/client.rb +17 -13
  29. data/lib/splitclient-rb/engine/api/events.rb +7 -6
  30. data/lib/splitclient-rb/engine/api/impressions.rb +6 -5
  31. data/lib/splitclient-rb/engine/api/metrics.rb +8 -7
  32. data/lib/splitclient-rb/engine/api/segments.rb +11 -10
  33. data/lib/splitclient-rb/engine/api/splits.rb +6 -5
  34. data/lib/splitclient-rb/engine/matchers/all_keys_matcher.rb +1 -1
  35. data/lib/splitclient-rb/engine/matchers/between_matcher.rb +7 -5
  36. data/lib/splitclient-rb/engine/matchers/combining_matcher.rb +5 -4
  37. data/lib/splitclient-rb/engine/matchers/contains_all_matcher.rb +4 -4
  38. data/lib/splitclient-rb/engine/matchers/contains_any_matcher.rb +3 -3
  39. data/lib/splitclient-rb/engine/matchers/contains_matcher.rb +7 -5
  40. data/lib/splitclient-rb/engine/matchers/dependency_matcher.rb +3 -2
  41. data/lib/splitclient-rb/engine/matchers/ends_with_matcher.rb +5 -4
  42. data/lib/splitclient-rb/engine/matchers/equal_to_boolean_matcher.rb +3 -2
  43. data/lib/splitclient-rb/engine/matchers/equal_to_matcher.rb +6 -4
  44. data/lib/splitclient-rb/engine/matchers/equal_to_set_matcher.rb +3 -3
  45. data/lib/splitclient-rb/engine/matchers/greater_than_or_equal_to_matcher.rb +6 -4
  46. data/lib/splitclient-rb/engine/matchers/less_than_or_equal_to_matcher.rb +6 -4
  47. data/lib/splitclient-rb/engine/matchers/matcher.rb +4 -0
  48. data/lib/splitclient-rb/engine/matchers/matches_string_matcher.rb +3 -2
  49. data/lib/splitclient-rb/engine/matchers/negation_matcher.rb +3 -2
  50. data/lib/splitclient-rb/engine/matchers/part_of_set_matcher.rb +4 -4
  51. data/lib/splitclient-rb/engine/matchers/set_matcher.rb +2 -1
  52. data/lib/splitclient-rb/engine/matchers/starts_with_matcher.rb +4 -3
  53. data/lib/splitclient-rb/engine/matchers/user_defined_segment_matcher.rb +3 -2
  54. data/lib/splitclient-rb/engine/matchers/whitelist_matcher.rb +7 -5
  55. data/lib/splitclient-rb/engine/models/label.rb +2 -0
  56. data/lib/splitclient-rb/engine/parser/condition.rb +31 -20
  57. data/lib/splitclient-rb/engine/parser/evaluator.rb +3 -2
  58. data/lib/splitclient-rb/engine/parser/split_adapter.rb +9 -7
  59. data/lib/splitclient-rb/localhost_split_factory.rb +3 -2
  60. data/lib/splitclient-rb/managers/split_manager.rb +39 -5
  61. data/lib/splitclient-rb/redis_metrics_fixer.rb +5 -4
  62. data/lib/splitclient-rb/split_config.rb +35 -14
  63. data/lib/splitclient-rb/split_factory.rb +44 -32
  64. data/lib/splitclient-rb/split_factory_builder.rb +4 -5
  65. data/lib/splitclient-rb/split_factory_registry.rb +51 -0
  66. data/lib/splitclient-rb/split_logger.rb +5 -14
  67. data/lib/splitclient-rb/validators.rb +19 -16
  68. data/lib/splitclient-rb/version.rb +1 -1
  69. metadata +5 -4
@@ -6,14 +6,15 @@ module SplitIoClient
6
6
 
7
7
  attr_reader :adapter
8
8
 
9
- def initialize(adapter)
10
- @adapter = case adapter.class.to_s
9
+ def initialize(config)
10
+ super(config)
11
+ @adapter = case @config.cache_adapter.class.to_s
11
12
  when 'SplitIoClient::Cache::Adapters::RedisAdapter'
12
- SplitIoClient::Cache::Adapters::CacheAdapter.new(adapter)
13
+ SplitIoClient::Cache::Adapters::CacheAdapter.new(@config)
13
14
  else
14
- adapter
15
+ @config.cache_adapter
15
16
  end
16
- @adapter.set_bool(namespace_key('.ready'), false) unless SplitIoClient.configuration.mode.equal?(:consumer)
17
+ @adapter.set_bool(namespace_key('.ready'), false) unless @config.mode.equal?(:consumer)
17
18
  end
18
19
 
19
20
  # Receives segment data, adds and removes segements from the store
@@ -6,14 +6,16 @@ module SplitIoClient
6
6
  class SplitsRepository < Repository
7
7
  attr_reader :adapter
8
8
 
9
- def initialize(adapter)
10
- @adapter = case adapter.class.to_s
9
+ def initialize(config)
10
+ super(config)
11
+ @tt_cache = {}
12
+ @adapter = case @config.cache_adapter.class.to_s
11
13
  when 'SplitIoClient::Cache::Adapters::RedisAdapter'
12
- SplitIoClient::Cache::Adapters::CacheAdapter.new(adapter)
14
+ SplitIoClient::Cache::Adapters::CacheAdapter.new(@config)
13
15
  else
14
- adapter
16
+ @config.cache_adapter
15
17
  end
16
- unless SplitIoClient.configuration.mode.equal?(:consumer)
18
+ unless @config.mode.equal?(:consumer)
17
19
  @adapter.set_string(namespace_key('.splits.till'), '-1')
18
20
  @adapter.initialize_map(namespace_key('.segments.registered'))
19
21
  end
@@ -21,15 +23,27 @@ module SplitIoClient
21
23
 
22
24
  def add_split(split)
23
25
  return unless split[:name]
26
+ existing_split = get_split(split[:name])
27
+
28
+ if(!existing_split)
29
+ increase_tt_name_count(split[:trafficTypeName])
30
+ elsif(existing_split[:trafficTypeName] != split[:trafficTypeName])
31
+ increase_tt_name_count(split[:trafficTypeName])
32
+ decrease_tt_name_count(existing_split[:trafficTypeName])
33
+ end
24
34
 
25
35
  @adapter.set_string(namespace_key(".split.#{split[:name]}"), split.to_json)
26
36
  end
27
37
 
28
- def remove_split(name)
29
- @adapter.delete(namespace_key(".split.#{name}"))
38
+ def remove_split(split)
39
+ tt_name = split[:trafficTypeName]
40
+
41
+ decrease_tt_name_count(split[:trafficTypeName])
42
+
43
+ @adapter.delete(namespace_key(".split.#{split[:name]}"))
30
44
  end
31
45
 
32
- def get_splits(names)
46
+ def get_splits(names, symbolize_names = true)
33
47
  splits = {}
34
48
  split_names = names.map { |name| namespace_key(".split.#{name}") }
35
49
  splits.merge!(
@@ -40,7 +54,8 @@ module SplitIoClient
40
54
 
41
55
  splits.map do |name, data|
42
56
  parsed_data = data ? JSON.parse(data, symbolize_names: true) : nil
43
- [name.to_sym, parsed_data]
57
+ split_name = symbolize_names ? name.to_sym : name
58
+ [split_name, parsed_data]
44
59
  end.to_h
45
60
  end
46
61
 
@@ -51,13 +66,22 @@ module SplitIoClient
51
66
  end
52
67
 
53
68
  def splits
54
- splits_hash = {}
69
+ get_splits(split_names, false)
70
+ end
55
71
 
56
- split_names.each do |name|
57
- splits_hash[name] = get_split(name)
72
+ def traffic_type_exists(tt_name)
73
+ case @adapter
74
+ when SplitIoClient::Cache::Adapters::CacheAdapter
75
+ tt_count = @adapter.string(namespace_key(".trafficType.#{tt_name}"))
76
+ begin
77
+ !tt_count.nil? && Integer(tt_count, 10) > 0
78
+ rescue StandardError => e
79
+ @config.logger.error("Error while parsing Traffic Type count: #{e.message}")
80
+ false
81
+ end
82
+ else
83
+ @tt_cache.key?(tt_name) && @tt_cache[tt_name] > 0
58
84
  end
59
-
60
- splits_hash
61
85
  end
62
86
 
63
87
  # Return an array of Split Names excluding control keys like splits.till
@@ -99,8 +123,26 @@ module SplitIoClient
99
123
  end
100
124
 
101
125
  def clear
126
+ @tt_cache.clear
127
+
102
128
  @adapter.clear(namespace_key)
103
129
  end
130
+
131
+ private
132
+
133
+ def increase_tt_name_count(tt_name)
134
+ return unless tt_name
135
+
136
+ @tt_cache[tt_name] = 0 unless @tt_cache[tt_name]
137
+ @tt_cache[tt_name] += 1
138
+ end
139
+
140
+ def decrease_tt_name_count(tt_name)
141
+ return unless tt_name
142
+
143
+ @tt_cache[tt_name] -= 1 if @tt_cache[tt_name]
144
+ @tt_cache.delete(tt_name) if @tt_cache[tt_name] == 0
145
+ end
104
146
  end
105
147
  end
106
148
  end
@@ -2,8 +2,9 @@ module SplitIoClient
2
2
  class ImpressionRouter
3
3
  attr_reader :router_thread
4
4
 
5
- def initialize
6
- @listener = SplitIoClient.configuration.impression_listener
5
+ def initialize(config)
6
+ @config = config
7
+ @listener = @config.impression_listener
7
8
 
8
9
  return unless @listener
9
10
 
@@ -44,12 +45,12 @@ module SplitIoClient
44
45
  end
45
46
 
46
47
  def router_thread
47
- SplitIoClient.configuration.threads[:impression_router] = Thread.new do
48
+ @config.threads[:impression_router] = Thread.new do
48
49
  loop do
49
50
  begin
50
51
  @listener.log(@queue.pop)
51
52
  rescue StandardError => error
52
- SplitIoClient.configuration.log_found_exception(__method__.to_s, error)
53
+ @config.log_found_exception(__method__.to_s, error)
53
54
  end
54
55
  end
55
56
  end
@@ -4,8 +4,9 @@ module SplitIoClient
4
4
  module Cache
5
5
  module Senders
6
6
  class EventsSender
7
- def initialize(events_repository)
7
+ def initialize(events_repository, config)
8
8
  @events_repository = events_repository
9
+ @config = config
9
10
  end
10
11
 
11
12
  def call
@@ -25,19 +26,19 @@ module SplitIoClient
25
26
  private
26
27
 
27
28
  def events_thread
28
- SplitIoClient.configuration.threads[:events_sender] = Thread.new do
29
+ @config.threads[:events_sender] = Thread.new do
29
30
  begin
30
- SplitIoClient.configuration.logger.info('Starting events service')
31
-
31
+ @config.logger.info('Starting events service')
32
+
32
33
  loop do
33
34
  post_events
34
35
 
35
- sleep(SplitIoClient::Utilities.randomize_interval(SplitIoClient.configuration.events_push_rate))
36
+ sleep(SplitIoClient::Utilities.randomize_interval(@config.events_push_rate))
36
37
  end
37
38
  rescue SplitIoClient::SDKShutdownException
38
39
  post_events
39
40
 
40
- SplitIoClient.configuration.logger.info('Posting events due to shutdown')
41
+ @config.logger.info('Posting events due to shutdown')
41
42
  end
42
43
  end
43
44
  end
@@ -4,14 +4,15 @@ module SplitIoClient
4
4
  module Cache
5
5
  module Senders
6
6
  class ImpressionsSender
7
- def initialize(impressions_repository, api_key)
7
+ def initialize(impressions_repository, api_key, config)
8
8
  @impressions_repository = impressions_repository
9
9
  @api_key = api_key
10
+ @config = config
10
11
  end
11
12
 
12
13
  def call
13
- if SplitIoClient.configuration.disable_impressions
14
- SplitIoClient.configuration.logger.info('Disabling impressions service by config')
14
+ if @config.disable_impressions
15
+ @config.logger.info('Disabling impressions service by config')
15
16
  return
16
17
  end
17
18
 
@@ -31,19 +32,19 @@ module SplitIoClient
31
32
  private
32
33
 
33
34
  def impressions_thread
34
- SplitIoClient.configuration.threads[:impressions_sender] = Thread.new do
35
+ @config.threads[:impressions_sender] = Thread.new do
35
36
  begin
36
- SplitIoClient.configuration.logger.info('Starting impressions service')
37
+ @config.logger.info('Starting impressions service')
37
38
 
38
39
  loop do
39
40
  post_impressions(false)
40
41
 
41
- sleep(SplitIoClient::Utilities.randomize_interval(SplitIoClient.configuration.impressions_refresh_rate))
42
+ sleep(SplitIoClient::Utilities.randomize_interval(@config.impressions_refresh_rate))
42
43
  end
43
44
  rescue SplitIoClient::SDKShutdownException
44
45
  post_impressions
45
46
 
46
- SplitIoClient.configuration.logger.info('Posting impressions due to shutdown')
47
+ @config.logger.info('Posting impressions due to shutdown')
47
48
  end
48
49
  end
49
50
  end
@@ -54,11 +55,11 @@ module SplitIoClient
54
55
 
55
56
  impressions_api.post(formatted_impressions)
56
57
  rescue StandardError => error
57
- SplitIoClient.configuration.log_found_exception(__method__.to_s, error)
58
+ @config.log_found_exception(__method__.to_s, error)
58
59
  end
59
60
 
60
61
  def impressions_api
61
- @impressions_api ||= SplitIoClient::Api::Impressions.new(@api_key)
62
+ @impressions_api ||= SplitIoClient::Api::Impressions.new(@api_key, @config)
62
63
  end
63
64
  end
64
65
  end
@@ -4,9 +4,10 @@ module SplitIoClient
4
4
  module Cache
5
5
  module Senders
6
6
  class MetricsSender
7
- def initialize(metrics_repository, api_key)
7
+ def initialize(metrics_repository, api_key, config)
8
8
  @metrics_repository = metrics_repository
9
9
  @api_key = api_key
10
+ @config = config
10
11
  end
11
12
 
12
13
  def call
@@ -24,19 +25,19 @@ module SplitIoClient
24
25
  private
25
26
 
26
27
  def metrics_thread
27
- SplitIoClient.configuration.threads[:metrics_sender] = Thread.new do
28
+ @config.threads[:metrics_sender] = Thread.new do
28
29
  begin
29
- SplitIoClient.configuration.logger.info('Starting metrics service')
30
-
30
+ @config.logger.info('Starting metrics service')
31
+
31
32
  loop do
32
33
  post_metrics
33
34
 
34
- sleep(SplitIoClient::Utilities.randomize_interval(SplitIoClient.configuration.metrics_refresh_rate))
35
+ sleep(SplitIoClient::Utilities.randomize_interval(@config.metrics_refresh_rate))
35
36
  end
36
37
  rescue SplitIoClient::SDKShutdownException
37
38
  post_metrics
38
39
 
39
- SplitIoClient.configuration.logger.info('Posting metrics due to shutdown')
40
+ @config.logger.info('Posting metrics due to shutdown')
40
41
  end
41
42
  end
42
43
  end
@@ -44,11 +45,11 @@ module SplitIoClient
44
45
  def post_metrics
45
46
  metrics_api.post
46
47
  rescue StandardError => error
47
- SplitIoClient.configuration.log_found_exception(__method__.to_s, error)
48
+ @config.log_found_exception(__method__.to_s, error)
48
49
  end
49
50
 
50
51
  def metrics_api
51
- @metrics_api ||= SplitIoClient::Api::Metrics.new(@api_key, @metrics_repository)
52
+ @metrics_api ||= SplitIoClient::Api::Metrics.new(@api_key, @metrics_repository, @config)
52
53
  end
53
54
  end
54
55
  end
@@ -7,37 +7,46 @@ module SplitIoClient
7
7
  class SDKBlocker
8
8
  attr_reader :splits_repository
9
9
 
10
- def initialize(splits_repository, segments_repository)
10
+ def initialize(splits_repository, segments_repository, config)
11
11
  @splits_repository = splits_repository
12
12
  @segments_repository = segments_repository
13
+ @config = config
13
14
 
14
- @splits_repository.not_ready!
15
- @segments_repository.not_ready!
15
+ if @config.standalone?
16
+ @splits_repository.not_ready!
17
+ @segments_repository.not_ready!
18
+ end
16
19
  end
17
20
 
18
21
  def splits_ready!
19
- @splits_repository.ready!
22
+ if !ready?
23
+ @splits_repository.ready!
24
+ @config.logger.info('splits are ready')
25
+ end
20
26
  end
21
27
 
22
28
  def segments_ready!
23
- @segments_repository.ready!
29
+ if !ready?
30
+ @segments_repository.ready!
31
+ @config.logger.info('segments are ready')
32
+ end
24
33
  end
25
34
 
26
- def block
35
+ def block(time = nil)
27
36
  begin
28
- Timeout::timeout(SplitIoClient.configuration.block_until_ready) do
37
+ timeout = time || @config.block_until_ready
38
+ Timeout::timeout(timeout) do
29
39
  sleep 0.1 until ready?
30
40
  end
31
41
  rescue Timeout::Error
32
42
  fail SDKBlockerTimeoutExpiredException, 'SDK start up timeout expired'
33
43
  end
34
44
 
35
- SplitIoClient.configuration.logger.info('SplitIO SDK is ready')
36
- SplitIoClient.configuration.threads[:split_store].run
37
- SplitIoClient.configuration.threads[:segment_store].run
45
+ @config.logger.info('SplitIO SDK is ready')
38
46
  end
39
47
 
40
48
  def ready?
49
+ return true if @config.consumer?
41
50
  @splits_repository.ready? && @segments_repository.ready?
42
51
  end
43
52
  end
@@ -4,10 +4,11 @@ module SplitIoClient
4
4
  class SegmentStore
5
5
  attr_reader :segments_repository
6
6
 
7
- def initialize(segments_repository, api_key, metrics, sdk_blocker = nil)
7
+ def initialize(segments_repository, api_key, metrics, config, sdk_blocker = nil)
8
8
  @segments_repository = segments_repository
9
9
  @api_key = api_key
10
10
  @metrics = metrics
11
+ @config = config
11
12
  @sdk_blocker = sdk_blocker
12
13
  end
13
14
 
@@ -28,42 +29,28 @@ module SplitIoClient
28
29
  private
29
30
 
30
31
  def segments_thread
31
- SplitIoClient.configuration.threads[:segment_store] = Thread.new do
32
- SplitIoClient.configuration.logger.info('Starting segments fetcher service')
33
- SplitIoClient.configuration.block_until_ready > 0 ? blocked_store : unblocked_store
34
- end
35
- end
32
+ @config.threads[:segment_store] = Thread.new do
33
+ @config.logger.info('Starting segments fetcher service')
36
34
 
37
- def blocked_store
38
- loop do
39
- next unless @sdk_blocker.splits_repository.ready?
35
+ loop do
36
+ next unless @sdk_blocker.splits_repository.ready?
40
37
 
41
- store_segments
42
- SplitIoClient.configuration.logger.debug("Segment names: #{@segments_repository.used_segment_names.to_a}") if SplitIoClient.configuration.debug_enabled
38
+ store_segments
39
+ @config.logger.debug("Segment names: #{@segments_repository.used_segment_names.to_a}") if @config.debug_enabled
43
40
 
44
- unless @sdk_blocker.ready?
45
- @sdk_blocker.segments_ready!
46
- SplitIoClient.configuration.logger.info('segments are ready')
41
+ sleep_for = random_interval(@config.segments_refresh_rate)
42
+ @config.logger.debug("Segments store is sleeping for: #{sleep_for} seconds") if @config.debug_enabled
43
+ sleep(sleep_for)
47
44
  end
48
-
49
- sleep_for = random_interval(SplitIoClient.configuration.segments_refresh_rate)
50
- SplitIoClient.configuration.logger.debug("Segments store is sleeping for: #{sleep_for} seconds") if SplitIoClient.configuration.debug_enabled
51
- sleep(sleep_for)
52
- end
53
- end
54
-
55
- def unblocked_store
56
- loop do
57
- store_segments
58
-
59
- sleep(random_interval(SplitIoClient.configuration.segments_refresh_rate))
60
45
  end
61
46
  end
62
47
 
63
48
  def store_segments
64
49
  segments_api.store_segments_by_names(@segments_repository.used_segment_names)
50
+
51
+ @sdk_blocker.segments_ready!
65
52
  rescue StandardError => error
66
- SplitIoClient.configuration.log_found_exception(__method__.to_s, error)
53
+ @config.log_found_exception(__method__.to_s, error)
67
54
  end
68
55
 
69
56
  def random_interval(interval)
@@ -73,7 +60,7 @@ module SplitIoClient
73
60
  end
74
61
 
75
62
  def segments_api
76
- @segments_api ||= SplitIoClient::Api::Segments.new(@api_key, @metrics, @segments_repository)
63
+ @segments_api ||= SplitIoClient::Api::Segments.new(@api_key, @metrics, @segments_repository, @config)
77
64
  end
78
65
  end
79
66
  end
@@ -4,10 +4,11 @@ module SplitIoClient
4
4
  class SplitStore
5
5
  attr_reader :splits_repository
6
6
 
7
- def initialize(splits_repository, api_key, metrics, sdk_blocker = nil)
7
+ def initialize(splits_repository, api_key, metrics, config, sdk_blocker = nil)
8
8
  @splits_repository = splits_repository
9
9
  @api_key = api_key
10
10
  @metrics = metrics
11
+ @config = config
11
12
  @sdk_blocker = sdk_blocker
12
13
  end
13
14
 
@@ -28,12 +29,12 @@ module SplitIoClient
28
29
  private
29
30
 
30
31
  def splits_thread
31
- SplitIoClient.configuration.threads[:split_store] = Thread.new do
32
- SplitIoClient.configuration.logger.info('Starting splits fetcher service')
32
+ @config.threads[:split_store] = Thread.new do
33
+ @config.logger.info('Starting splits fetcher service')
33
34
  loop do
34
35
  store_splits
35
36
 
36
- sleep(random_interval(SplitIoClient.configuration.features_refresh_rate))
37
+ sleep(random_interval(@config.features_refresh_rate))
37
38
  end
38
39
  end
39
40
  end
@@ -48,15 +49,12 @@ module SplitIoClient
48
49
  @splits_repository.set_segment_names(data[:segment_names])
49
50
  @splits_repository.set_change_number(data[:till])
50
51
 
51
- SplitIoClient.configuration.logger.debug("segments seen(#{data[:segment_names].length}): #{data[:segment_names].to_a}") if SplitIoClient.configuration.debug_enabled
52
+ @config.logger.debug("segments seen(#{data[:segment_names].length}): #{data[:segment_names].to_a}") if @config.debug_enabled
52
53
 
53
- if SplitIoClient.configuration.block_until_ready > 0 && !@sdk_blocker.ready?
54
- @sdk_blocker.splits_ready!
55
- SplitIoClient.configuration.logger.info('splits are ready')
56
- end
54
+ @sdk_blocker.splits_ready!
57
55
 
58
56
  rescue StandardError => error
59
- SplitIoClient.configuration.log_found_exception(__method__.to_s, error)
57
+ @config.log_found_exception(__method__.to_s, error)
60
58
  end
61
59
 
62
60
  def random_interval(interval)
@@ -71,7 +69,7 @@ module SplitIoClient
71
69
 
72
70
  def add_split_unless_archived(split)
73
71
  if Engine::Models::Split.archived?(split)
74
- SplitIoClient.configuration.logger.debug("Seeing archived split #{split[:name]}") if SplitIoClient.configuration.debug_enabled
72
+ @config.logger.debug("Seeing archived split #{split[:name]}") if @config.debug_enabled
75
73
 
76
74
  remove_archived_split(split)
77
75
  else
@@ -80,13 +78,13 @@ module SplitIoClient
80
78
  end
81
79
 
82
80
  def remove_archived_split(split)
83
- SplitIoClient.configuration.logger.debug("removing split from store(#{split})") if SplitIoClient.configuration.debug_enabled
81
+ @config.logger.debug("removing split from store(#{split})") if @config.debug_enabled
84
82
 
85
- @splits_repository.remove_split(split[:name])
83
+ @splits_repository.remove_split(split)
86
84
  end
87
85
 
88
86
  def store_split(split)
89
- SplitIoClient.configuration.logger.debug("storing split (#{split[:name]})") if SplitIoClient.configuration.debug_enabled
87
+ @config.logger.debug("storing split (#{split[:name]})") if @config.debug_enabled
90
88
 
91
89
  @splits_repository.add_split(split)
92
90
  end
@@ -94,7 +92,7 @@ module SplitIoClient
94
92
  private
95
93
 
96
94
  def splits_api
97
- @splits_api ||= SplitIoClient::Api::Splits.new(@api_key, @metrics)
95
+ @splits_api ||= SplitIoClient::Api::Splits.new(@api_key, @metrics, @config)
98
96
  end
99
97
  end
100
98
  end