splitclient-rb 4.1.0 → 4.2.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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.txt +8 -0
  3. data/NEWS +6 -0
  4. data/README.md +5 -18
  5. data/lib/splitclient-rb.rb +65 -54
  6. data/lib/{cache → splitclient-rb/cache}/adapters/memory_adapter.rb +0 -0
  7. data/lib/{cache → splitclient-rb/cache}/adapters/memory_adapters/map_adapter.rb +0 -0
  8. data/lib/{cache → splitclient-rb/cache}/adapters/memory_adapters/queue_adapter.rb +0 -0
  9. data/lib/{cache → splitclient-rb/cache}/adapters/redis_adapter.rb +0 -0
  10. data/lib/{cache → splitclient-rb/cache}/repositories/impressions/memory_repository.rb +0 -0
  11. data/lib/{cache → splitclient-rb/cache}/repositories/impressions/redis_repository.rb +0 -0
  12. data/lib/{cache → splitclient-rb/cache}/repositories/impressions_repository.rb +0 -0
  13. data/lib/{cache → splitclient-rb/cache}/repositories/metrics/memory_repository.rb +0 -0
  14. data/lib/{cache → splitclient-rb/cache}/repositories/metrics/redis_repository.rb +0 -0
  15. data/lib/{cache → splitclient-rb/cache}/repositories/metrics_repository.rb +0 -0
  16. data/lib/{cache → splitclient-rb/cache}/repositories/repository.rb +0 -0
  17. data/lib/{cache → splitclient-rb/cache}/repositories/segments_repository.rb +0 -0
  18. data/lib/{cache → splitclient-rb/cache}/repositories/splits_repository.rb +0 -0
  19. data/lib/{cache → splitclient-rb/cache}/senders/impressions_formatter.rb +0 -0
  20. data/lib/{cache → splitclient-rb/cache}/senders/impressions_sender.rb +1 -1
  21. data/lib/{cache → splitclient-rb/cache}/senders/metrics_sender.rb +1 -1
  22. data/lib/{cache → splitclient-rb/cache}/stores/sdk_blocker.rb +0 -0
  23. data/lib/{cache → splitclient-rb/cache}/stores/segment_store.rb +0 -0
  24. data/lib/{cache → splitclient-rb/cache}/stores/split_store.rb +0 -0
  25. data/lib/splitclient-rb/clients/localhost_split_client.rb +3 -3
  26. data/lib/splitclient-rb/clients/split_client.rb +28 -25
  27. data/lib/{engine → splitclient-rb/engine}/api/client.rb +4 -4
  28. data/lib/splitclient-rb/engine/api/faraday_middleware/gzip.rb +55 -0
  29. data/lib/{engine → splitclient-rb/engine}/api/impressions.rb +0 -0
  30. data/lib/{engine → splitclient-rb/engine}/api/metrics.rb +0 -0
  31. data/lib/{engine → splitclient-rb/engine}/api/segments.rb +0 -0
  32. data/lib/{engine → splitclient-rb/engine}/api/splits.rb +0 -0
  33. data/lib/{engine → splitclient-rb/engine}/evaluator/splitter.rb +2 -2
  34. data/lib/{engine → splitclient-rb/engine}/matchers/all_keys_matcher.rb +1 -1
  35. data/lib/{engine → splitclient-rb/engine}/matchers/between_matcher.rb +2 -2
  36. data/lib/{engine → splitclient-rb/engine}/matchers/combiners.rb +0 -0
  37. data/lib/{engine → splitclient-rb/engine}/matchers/combining_matcher.rb +10 -8
  38. data/lib/{engine → splitclient-rb/engine}/matchers/contains_all_matcher.rb +1 -1
  39. data/lib/{engine → splitclient-rb/engine}/matchers/contains_any_matcher.rb +1 -1
  40. data/lib/{engine → splitclient-rb/engine}/matchers/contains_matcher.rb +1 -1
  41. data/lib/splitclient-rb/engine/matchers/dependency_matcher.rb +16 -0
  42. data/lib/{engine → splitclient-rb/engine}/matchers/ends_with_matcher.rb +1 -1
  43. data/lib/splitclient-rb/engine/matchers/equal_to_boolean_matcher.rb +21 -0
  44. data/lib/{engine → splitclient-rb/engine}/matchers/equal_to_matcher.rb +2 -2
  45. data/lib/{engine → splitclient-rb/engine}/matchers/equal_to_set_matcher.rb +1 -1
  46. data/lib/{engine → splitclient-rb/engine}/matchers/greater_than_or_equal_to_matcher.rb +2 -2
  47. data/lib/{engine → splitclient-rb/engine}/matchers/less_than_or_equal_to_matcher.rb +2 -2
  48. data/lib/splitclient-rb/engine/matchers/matches_string_matcher.rb +23 -0
  49. data/lib/{engine → splitclient-rb/engine}/matchers/negation_matcher.rb +2 -2
  50. data/lib/{engine → splitclient-rb/engine}/matchers/part_of_set_matcher.rb +1 -1
  51. data/lib/{engine → splitclient-rb/engine}/matchers/set_matcher.rb +0 -0
  52. data/lib/{engine → splitclient-rb/engine}/matchers/starts_with_matcher.rb +1 -1
  53. data/lib/{engine → splitclient-rb/engine}/matchers/user_defined_segment_matcher.rb +2 -2
  54. data/lib/{engine → splitclient-rb/engine}/matchers/whitelist_matcher.rb +2 -2
  55. data/lib/{engine → splitclient-rb/engine}/metrics/binary_search_latency_tracker.rb +0 -0
  56. data/lib/{engine → splitclient-rb/engine}/metrics/metrics.rb +0 -0
  57. data/lib/splitclient-rb/engine/models/label.rb +7 -0
  58. data/lib/{engine → splitclient-rb/engine}/models/split.rb +0 -0
  59. data/lib/splitclient-rb/engine/models/treatment.rb +3 -0
  60. data/lib/{engine → splitclient-rb/engine}/parser/condition.rb +21 -0
  61. data/lib/{engine/parser/split_treatment.rb → splitclient-rb/engine/parser/evaluator.rb} +29 -13
  62. data/lib/{engine → splitclient-rb/engine}/parser/partition.rb +0 -0
  63. data/lib/{engine → splitclient-rb/engine}/parser/split_adapter.rb +0 -0
  64. data/lib/{exceptions → splitclient-rb/exceptions}/sdk_blocker_timeout_expired_exception.rb +0 -0
  65. data/lib/splitclient-rb/localhost_utils.rb +1 -1
  66. data/lib/splitclient-rb/split_config.rb +7 -4
  67. data/lib/splitclient-rb/utilitites.rb +41 -0
  68. data/lib/splitclient-rb/version.rb +1 -1
  69. data/splitclient-rb.gemspec +6 -8
  70. metadata +76 -100
  71. data/lib/engine/models/label.rb +0 -13
  72. data/lib/engine/partitions/treatments.rb +0 -36
  73. data/lib/splitclient-rb_utilitites.rb +0 -39
@@ -1,21 +1,37 @@
1
1
  module SplitIoClient
2
2
  module Engine
3
3
  module Parser
4
- class SplitTreatment
5
- def initialize(segments_repository)
4
+ class Evaluator
5
+ def initialize(segments_repository, splits_repository, multiple = false)
6
+ @splits_repository = splits_repository
6
7
  @segments_repository = segments_repository
8
+ @multiple = multiple
9
+ @cache = {}
7
10
  end
8
11
 
9
12
  def call(keys, split, attributes = nil)
10
- @default_treatment = split[:defaultTreatment]
13
+ # DependencyMatcher here, split is actually a split_name in this case
14
+ cache_result = split.is_a? String
15
+ split = @splits_repository.get_split(split) if cache_result
16
+ digest = Digest::MD5.hexdigest("#{{matching_key: keys[:matching_key]}}#{split}#{attributes}")
11
17
 
12
- return treatment(Models::Label::ARCHIVED, Treatments::CONTROL, split[:changeNumber]) if Models::Split.archived?(split)
18
+ if Models::Split.archived?(split)
19
+ return treatment_hash(Models::Label::ARCHIVED, Models::Treatment::CONTROL, split[:changeNumber])
20
+ end
13
21
 
14
- if Models::Split.matchable?(split)
15
- match(split, keys, attributes)
22
+ treatment = if Models::Split.matchable?(split)
23
+ if @multiple && @cache[digest]
24
+ @cache[digest]
25
+ else
26
+ match(split, keys, attributes)
27
+ end
16
28
  else
17
- treatment(Models::Label::KILLED, @default_treatment, split[:changeNumber])
29
+ treatment_hash(Models::Label::KILLED, split[:defaultTreatment], split[:changeNumber])
18
30
  end
31
+
32
+ @cache[digest] = treatment if cache_result
33
+
34
+ treatment
19
35
  end
20
36
 
21
37
  private
@@ -35,26 +51,26 @@ module SplitIoClient
35
51
  bucket = Splitter.bucket(Splitter.count_hash(key, split[:trafficAllocationSeed].to_i, legacy_algo))
36
52
 
37
53
  if bucket >= split[:trafficAllocation]
38
- return treatment(Models::Label::NOT_IN_SPLIT, @default_treatment, split[:changeNumber])
54
+ return treatment_hash(Models::Label::NOT_IN_SPLIT, split[:defaultTreatment], split[:changeNumber])
39
55
  end
40
56
  end
41
57
 
42
58
  in_rollout = true
43
59
  end
44
60
 
45
- if matcher_type(condition).match?(keys[:matching_key], attributes)
61
+ if matcher_type(condition).match?(keys[:matching_key], keys[:bucketing_key], self, attributes)
46
62
  key = keys[:bucketing_key] ? keys[:bucketing_key] : keys[:matching_key]
47
63
  result = Splitter.get_treatment(key, split[:seed], condition.partitions, split[:algo])
48
64
 
49
65
  if result.nil?
50
- return treatment(Models::Label::NO_RULE_MATCHED, @default_treatment, split[:changeNumber])
66
+ return treatment_hash(Models::Label::NO_RULE_MATCHED, split[:defaultTreatment], split[:changeNumber])
51
67
  else
52
- return treatment(c[:label], result, split[:changeNumber])
68
+ return treatment_hash(c[:label], result, split[:changeNumber])
53
69
  end
54
70
  end
55
71
  end
56
72
 
57
- treatment(Models::Label::NO_RULE_MATCHED, @default_treatment, split[:changeNumber])
73
+ treatment_hash(Models::Label::NO_RULE_MATCHED, split[:defaultTreatment], split[:changeNumber])
58
74
  end
59
75
 
60
76
  def matcher_type(condition)
@@ -79,7 +95,7 @@ module SplitIoClient
79
95
  end
80
96
  end
81
97
 
82
- def treatment(label, treatment, change_number = nil)
98
+ def treatment_hash(label, treatment, change_number = nil)
83
99
  { label: label, treatment: treatment, change_number: change_number }
84
100
  end
85
101
 
@@ -18,7 +18,7 @@ module SplitIoClient
18
18
  @localhost_mode_features = []
19
19
  store_features(splits_file)
20
20
 
21
- sleep(::Utilities.randomize_interval(reload_rate))
21
+ sleep(SplitIoClient::Utilities.randomize_interval(reload_rate))
22
22
  end
23
23
  end
24
24
  end
@@ -260,7 +260,7 @@ module SplitIoClient
260
260
  #
261
261
  # @return [object]
262
262
  def self.default_logger
263
- Logger.new($stdout)
263
+ (defined?(Rails) && Rails.logger) ? Rails.logger : Logger.new($stdout)
264
264
  end
265
265
 
266
266
  #
@@ -334,9 +334,12 @@ module SplitIoClient
334
334
  #
335
335
  # @return [string]
336
336
  def self.get_ip
337
- Socket.ip_address_list.detect { |intf| intf.ipv4_private? }.ip_address
338
- rescue StandardError
339
- 'unknown'
337
+ loopback_ip = Socket.ip_address_list.find { |ip| ip.ipv4_loopback? }
338
+ private_ip = Socket.ip_address_list.find { |ip| ip.ipv4_private? }
339
+
340
+ addr_info = private_ip || loopback_ip
341
+
342
+ addr_info.ip_address
340
343
  end
341
344
  end
342
345
  end
@@ -0,0 +1,41 @@
1
+ module SplitIoClient
2
+ module Utilities
3
+ extend self
4
+
5
+ # Convert String with Time info to its epoch FixNum previously setting to zero the seconds
6
+ def to_epoch(value)
7
+ parsed = Time.parse(value)
8
+ zeroed = Time.new(parsed.year, parsed.month, parsed.day, parsed.hour, parsed.min, 0, 0)
9
+
10
+ zeroed.to_i
11
+ end
12
+
13
+ def to_epoch_milis(value)
14
+ to_epoch(value) * 1000
15
+ end
16
+
17
+ def to_milis_zero_out_from_seconds(value)
18
+ parsed_value = Time.strptime(value.to_s, '%s').utc
19
+ zeroed = Time.new(parsed_value.year, parsed_value.month, parsed_value.day, parsed_value.hour, parsed_value.min, 0, 0)
20
+
21
+ zeroed.to_i * 1000
22
+ rescue StandardError
23
+ return :non_valid_date_info
24
+ end
25
+
26
+ def to_milis_zero_out_from_hour(value)
27
+ parsed_value = Time.strptime(value.to_s, '%s').utc
28
+ zeroed = Time.new(parsed_value.year, parsed_value.month, parsed_value.day, 0, 0, 0, 0)
29
+
30
+ zeroed.to_i * 1000
31
+ rescue StandardError
32
+ return :non_valid_date_info
33
+ end
34
+
35
+ def randomize_interval(interval)
36
+ random_factor = Random.new.rand(50..100) / 100.0
37
+
38
+ interval * random_factor
39
+ end
40
+ end
41
+ end
@@ -1,3 +1,3 @@
1
1
  module SplitIoClient
2
- VERSION = '4.1.0'
2
+ VERSION = '4.2.0'
3
3
  end
@@ -29,13 +29,11 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "simplecov"
30
30
  spec.add_development_dependency "allocation_stats"
31
31
 
32
- spec.add_runtime_dependency "json", "~> 1.8"
33
- spec.add_runtime_dependency "thread_safe"
32
+ spec.add_runtime_dependency "json", ">= 1.8"
33
+ spec.add_runtime_dependency "thread_safe", ">= 0.3"
34
34
  spec.add_runtime_dependency "concurrent-ruby", "~> 1.0"
35
- spec.add_runtime_dependency "faraday"
36
- spec.add_runtime_dependency "faraday-http-cache"
37
- spec.add_runtime_dependency "faraday_middleware"
38
- spec.add_runtime_dependency "net-http-persistent", "<= 2.9.4"
39
- spec.add_runtime_dependency "redis"
40
- spec.add_runtime_dependency "digest-murmurhash"
35
+ spec.add_runtime_dependency "faraday", ">= 0.8"
36
+ spec.add_runtime_dependency "net-http-persistent", "~> 2.9"
37
+ spec.add_runtime_dependency "redis", "~> 3.2"
38
+ spec.add_runtime_dependency "digest-murmurhash", ">= 1.1"
41
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: splitclient-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Split Software
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-18 00:00:00.000000000 Z
11
+ date: 2017-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -140,14 +140,14 @@ dependencies:
140
140
  name: json
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '1.8'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - "~>"
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '1.8'
153
153
  - !ruby/object:Gem::Dependency
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: '0'
159
+ version: '0.3'
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: '0'
166
+ version: '0.3'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: concurrent-ruby
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -184,84 +184,56 @@ dependencies:
184
184
  requirements:
185
185
  - - ">="
186
186
  - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :runtime
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: '0'
195
- - !ruby/object:Gem::Dependency
196
- name: faraday-http-cache
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - ">="
200
- - !ruby/object:Gem::Version
201
- version: '0'
202
- type: :runtime
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- version: '0'
209
- - !ruby/object:Gem::Dependency
210
- name: faraday_middleware
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - ">="
214
- - !ruby/object:Gem::Version
215
- version: '0'
187
+ version: '0.8'
216
188
  type: :runtime
217
189
  prerelease: false
218
190
  version_requirements: !ruby/object:Gem::Requirement
219
191
  requirements:
220
192
  - - ">="
221
193
  - !ruby/object:Gem::Version
222
- version: '0'
194
+ version: '0.8'
223
195
  - !ruby/object:Gem::Dependency
224
196
  name: net-http-persistent
225
197
  requirement: !ruby/object:Gem::Requirement
226
198
  requirements:
227
- - - "<="
199
+ - - "~>"
228
200
  - !ruby/object:Gem::Version
229
- version: 2.9.4
201
+ version: '2.9'
230
202
  type: :runtime
231
203
  prerelease: false
232
204
  version_requirements: !ruby/object:Gem::Requirement
233
205
  requirements:
234
- - - "<="
206
+ - - "~>"
235
207
  - !ruby/object:Gem::Version
236
- version: 2.9.4
208
+ version: '2.9'
237
209
  - !ruby/object:Gem::Dependency
238
210
  name: redis
239
211
  requirement: !ruby/object:Gem::Requirement
240
212
  requirements:
241
- - - ">="
213
+ - - "~>"
242
214
  - !ruby/object:Gem::Version
243
- version: '0'
215
+ version: '3.2'
244
216
  type: :runtime
245
217
  prerelease: false
246
218
  version_requirements: !ruby/object:Gem::Requirement
247
219
  requirements:
248
- - - ">="
220
+ - - "~>"
249
221
  - !ruby/object:Gem::Version
250
- version: '0'
222
+ version: '3.2'
251
223
  - !ruby/object:Gem::Dependency
252
224
  name: digest-murmurhash
253
225
  requirement: !ruby/object:Gem::Requirement
254
226
  requirements:
255
227
  - - ">="
256
228
  - !ruby/object:Gem::Version
257
- version: '0'
229
+ version: '1.1'
258
230
  type: :runtime
259
231
  prerelease: false
260
232
  version_requirements: !ruby/object:Gem::Requirement
261
233
  requirements:
262
234
  - - ">="
263
235
  - !ruby/object:Gem::Version
264
- version: '0'
236
+ version: '1.1'
265
237
  description: Ruby client for using split SDK.
266
238
  email:
267
239
  - pato@split.io
@@ -280,62 +252,66 @@ files:
280
252
  - Rakefile
281
253
  - console
282
254
  - exe/splitio
283
- - lib/cache/adapters/memory_adapter.rb
284
- - lib/cache/adapters/memory_adapters/map_adapter.rb
285
- - lib/cache/adapters/memory_adapters/queue_adapter.rb
286
- - lib/cache/adapters/redis_adapter.rb
287
- - lib/cache/repositories/impressions/memory_repository.rb
288
- - lib/cache/repositories/impressions/redis_repository.rb
289
- - lib/cache/repositories/impressions_repository.rb
290
- - lib/cache/repositories/metrics/memory_repository.rb
291
- - lib/cache/repositories/metrics/redis_repository.rb
292
- - lib/cache/repositories/metrics_repository.rb
293
- - lib/cache/repositories/repository.rb
294
- - lib/cache/repositories/segments_repository.rb
295
- - lib/cache/repositories/splits_repository.rb
296
- - lib/cache/senders/impressions_formatter.rb
297
- - lib/cache/senders/impressions_sender.rb
298
- - lib/cache/senders/metrics_sender.rb
299
- - lib/cache/stores/sdk_blocker.rb
300
- - lib/cache/stores/segment_store.rb
301
- - lib/cache/stores/split_store.rb
302
- - lib/engine/api/client.rb
303
- - lib/engine/api/impressions.rb
304
- - lib/engine/api/metrics.rb
305
- - lib/engine/api/segments.rb
306
- - lib/engine/api/splits.rb
307
- - lib/engine/evaluator/splitter.rb
308
- - lib/engine/matchers/all_keys_matcher.rb
309
- - lib/engine/matchers/between_matcher.rb
310
- - lib/engine/matchers/combiners.rb
311
- - lib/engine/matchers/combining_matcher.rb
312
- - lib/engine/matchers/contains_all_matcher.rb
313
- - lib/engine/matchers/contains_any_matcher.rb
314
- - lib/engine/matchers/contains_matcher.rb
315
- - lib/engine/matchers/ends_with_matcher.rb
316
- - lib/engine/matchers/equal_to_matcher.rb
317
- - lib/engine/matchers/equal_to_set_matcher.rb
318
- - lib/engine/matchers/greater_than_or_equal_to_matcher.rb
319
- - lib/engine/matchers/less_than_or_equal_to_matcher.rb
320
- - lib/engine/matchers/negation_matcher.rb
321
- - lib/engine/matchers/part_of_set_matcher.rb
322
- - lib/engine/matchers/set_matcher.rb
323
- - lib/engine/matchers/starts_with_matcher.rb
324
- - lib/engine/matchers/user_defined_segment_matcher.rb
325
- - lib/engine/matchers/whitelist_matcher.rb
326
- - lib/engine/metrics/binary_search_latency_tracker.rb
327
- - lib/engine/metrics/metrics.rb
328
- - lib/engine/models/label.rb
329
- - lib/engine/models/split.rb
330
- - lib/engine/parser/condition.rb
331
- - lib/engine/parser/partition.rb
332
- - lib/engine/parser/split_adapter.rb
333
- - lib/engine/parser/split_treatment.rb
334
- - lib/engine/partitions/treatments.rb
335
- - lib/exceptions/sdk_blocker_timeout_expired_exception.rb
336
255
  - lib/splitclient-rb.rb
256
+ - lib/splitclient-rb/cache/adapters/memory_adapter.rb
257
+ - lib/splitclient-rb/cache/adapters/memory_adapters/map_adapter.rb
258
+ - lib/splitclient-rb/cache/adapters/memory_adapters/queue_adapter.rb
259
+ - lib/splitclient-rb/cache/adapters/redis_adapter.rb
260
+ - lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb
261
+ - lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb
262
+ - lib/splitclient-rb/cache/repositories/impressions_repository.rb
263
+ - lib/splitclient-rb/cache/repositories/metrics/memory_repository.rb
264
+ - lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb
265
+ - lib/splitclient-rb/cache/repositories/metrics_repository.rb
266
+ - lib/splitclient-rb/cache/repositories/repository.rb
267
+ - lib/splitclient-rb/cache/repositories/segments_repository.rb
268
+ - lib/splitclient-rb/cache/repositories/splits_repository.rb
269
+ - lib/splitclient-rb/cache/senders/impressions_formatter.rb
270
+ - lib/splitclient-rb/cache/senders/impressions_sender.rb
271
+ - lib/splitclient-rb/cache/senders/metrics_sender.rb
272
+ - lib/splitclient-rb/cache/stores/sdk_blocker.rb
273
+ - lib/splitclient-rb/cache/stores/segment_store.rb
274
+ - lib/splitclient-rb/cache/stores/split_store.rb
337
275
  - lib/splitclient-rb/clients/localhost_split_client.rb
338
276
  - lib/splitclient-rb/clients/split_client.rb
277
+ - lib/splitclient-rb/engine/api/client.rb
278
+ - lib/splitclient-rb/engine/api/faraday_middleware/gzip.rb
279
+ - lib/splitclient-rb/engine/api/impressions.rb
280
+ - lib/splitclient-rb/engine/api/metrics.rb
281
+ - lib/splitclient-rb/engine/api/segments.rb
282
+ - lib/splitclient-rb/engine/api/splits.rb
283
+ - lib/splitclient-rb/engine/evaluator/splitter.rb
284
+ - lib/splitclient-rb/engine/matchers/all_keys_matcher.rb
285
+ - lib/splitclient-rb/engine/matchers/between_matcher.rb
286
+ - lib/splitclient-rb/engine/matchers/combiners.rb
287
+ - lib/splitclient-rb/engine/matchers/combining_matcher.rb
288
+ - lib/splitclient-rb/engine/matchers/contains_all_matcher.rb
289
+ - lib/splitclient-rb/engine/matchers/contains_any_matcher.rb
290
+ - lib/splitclient-rb/engine/matchers/contains_matcher.rb
291
+ - lib/splitclient-rb/engine/matchers/dependency_matcher.rb
292
+ - lib/splitclient-rb/engine/matchers/ends_with_matcher.rb
293
+ - lib/splitclient-rb/engine/matchers/equal_to_boolean_matcher.rb
294
+ - lib/splitclient-rb/engine/matchers/equal_to_matcher.rb
295
+ - lib/splitclient-rb/engine/matchers/equal_to_set_matcher.rb
296
+ - lib/splitclient-rb/engine/matchers/greater_than_or_equal_to_matcher.rb
297
+ - lib/splitclient-rb/engine/matchers/less_than_or_equal_to_matcher.rb
298
+ - lib/splitclient-rb/engine/matchers/matches_string_matcher.rb
299
+ - lib/splitclient-rb/engine/matchers/negation_matcher.rb
300
+ - lib/splitclient-rb/engine/matchers/part_of_set_matcher.rb
301
+ - lib/splitclient-rb/engine/matchers/set_matcher.rb
302
+ - lib/splitclient-rb/engine/matchers/starts_with_matcher.rb
303
+ - lib/splitclient-rb/engine/matchers/user_defined_segment_matcher.rb
304
+ - lib/splitclient-rb/engine/matchers/whitelist_matcher.rb
305
+ - lib/splitclient-rb/engine/metrics/binary_search_latency_tracker.rb
306
+ - lib/splitclient-rb/engine/metrics/metrics.rb
307
+ - lib/splitclient-rb/engine/models/label.rb
308
+ - lib/splitclient-rb/engine/models/split.rb
309
+ - lib/splitclient-rb/engine/models/treatment.rb
310
+ - lib/splitclient-rb/engine/parser/condition.rb
311
+ - lib/splitclient-rb/engine/parser/evaluator.rb
312
+ - lib/splitclient-rb/engine/parser/partition.rb
313
+ - lib/splitclient-rb/engine/parser/split_adapter.rb
314
+ - lib/splitclient-rb/exceptions/sdk_blocker_timeout_expired_exception.rb
339
315
  - lib/splitclient-rb/localhost_split_factory.rb
340
316
  - lib/splitclient-rb/localhost_utils.rb
341
317
  - lib/splitclient-rb/managers/localhost_split_manager.rb
@@ -343,8 +319,8 @@ files:
343
319
  - lib/splitclient-rb/split_config.rb
344
320
  - lib/splitclient-rb/split_factory.rb
345
321
  - lib/splitclient-rb/split_factory_builder.rb
322
+ - lib/splitclient-rb/utilitites.rb
346
323
  - lib/splitclient-rb/version.rb
347
- - lib/splitclient-rb_utilitites.rb
348
324
  - runTests
349
325
  - splitclient-rb.gemspec
350
326
  - splitio.yml.example