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

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.
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