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.
- checksums.yaml +4 -4
- data/CHANGES.txt +8 -0
- data/NEWS +6 -0
- data/README.md +5 -18
- data/lib/splitclient-rb.rb +65 -54
- data/lib/{cache → splitclient-rb/cache}/adapters/memory_adapter.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/adapters/memory_adapters/map_adapter.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/adapters/memory_adapters/queue_adapter.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/adapters/redis_adapter.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/repositories/impressions/memory_repository.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/repositories/impressions/redis_repository.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/repositories/impressions_repository.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/repositories/metrics/memory_repository.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/repositories/metrics/redis_repository.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/repositories/metrics_repository.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/repositories/repository.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/repositories/segments_repository.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/repositories/splits_repository.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/senders/impressions_formatter.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/senders/impressions_sender.rb +1 -1
- data/lib/{cache → splitclient-rb/cache}/senders/metrics_sender.rb +1 -1
- data/lib/{cache → splitclient-rb/cache}/stores/sdk_blocker.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/stores/segment_store.rb +0 -0
- data/lib/{cache → splitclient-rb/cache}/stores/split_store.rb +0 -0
- data/lib/splitclient-rb/clients/localhost_split_client.rb +3 -3
- data/lib/splitclient-rb/clients/split_client.rb +28 -25
- data/lib/{engine → splitclient-rb/engine}/api/client.rb +4 -4
- data/lib/splitclient-rb/engine/api/faraday_middleware/gzip.rb +55 -0
- data/lib/{engine → splitclient-rb/engine}/api/impressions.rb +0 -0
- data/lib/{engine → splitclient-rb/engine}/api/metrics.rb +0 -0
- data/lib/{engine → splitclient-rb/engine}/api/segments.rb +0 -0
- data/lib/{engine → splitclient-rb/engine}/api/splits.rb +0 -0
- data/lib/{engine → splitclient-rb/engine}/evaluator/splitter.rb +2 -2
- data/lib/{engine → splitclient-rb/engine}/matchers/all_keys_matcher.rb +1 -1
- data/lib/{engine → splitclient-rb/engine}/matchers/between_matcher.rb +2 -2
- data/lib/{engine → splitclient-rb/engine}/matchers/combiners.rb +0 -0
- data/lib/{engine → splitclient-rb/engine}/matchers/combining_matcher.rb +10 -8
- data/lib/{engine → splitclient-rb/engine}/matchers/contains_all_matcher.rb +1 -1
- data/lib/{engine → splitclient-rb/engine}/matchers/contains_any_matcher.rb +1 -1
- data/lib/{engine → splitclient-rb/engine}/matchers/contains_matcher.rb +1 -1
- data/lib/splitclient-rb/engine/matchers/dependency_matcher.rb +16 -0
- data/lib/{engine → splitclient-rb/engine}/matchers/ends_with_matcher.rb +1 -1
- data/lib/splitclient-rb/engine/matchers/equal_to_boolean_matcher.rb +21 -0
- data/lib/{engine → splitclient-rb/engine}/matchers/equal_to_matcher.rb +2 -2
- data/lib/{engine → splitclient-rb/engine}/matchers/equal_to_set_matcher.rb +1 -1
- data/lib/{engine → splitclient-rb/engine}/matchers/greater_than_or_equal_to_matcher.rb +2 -2
- data/lib/{engine → splitclient-rb/engine}/matchers/less_than_or_equal_to_matcher.rb +2 -2
- data/lib/splitclient-rb/engine/matchers/matches_string_matcher.rb +23 -0
- data/lib/{engine → splitclient-rb/engine}/matchers/negation_matcher.rb +2 -2
- data/lib/{engine → splitclient-rb/engine}/matchers/part_of_set_matcher.rb +1 -1
- data/lib/{engine → splitclient-rb/engine}/matchers/set_matcher.rb +0 -0
- data/lib/{engine → splitclient-rb/engine}/matchers/starts_with_matcher.rb +1 -1
- data/lib/{engine → splitclient-rb/engine}/matchers/user_defined_segment_matcher.rb +2 -2
- data/lib/{engine → splitclient-rb/engine}/matchers/whitelist_matcher.rb +2 -2
- data/lib/{engine → splitclient-rb/engine}/metrics/binary_search_latency_tracker.rb +0 -0
- data/lib/{engine → splitclient-rb/engine}/metrics/metrics.rb +0 -0
- data/lib/splitclient-rb/engine/models/label.rb +7 -0
- data/lib/{engine → splitclient-rb/engine}/models/split.rb +0 -0
- data/lib/splitclient-rb/engine/models/treatment.rb +3 -0
- data/lib/{engine → splitclient-rb/engine}/parser/condition.rb +21 -0
- data/lib/{engine/parser/split_treatment.rb → splitclient-rb/engine/parser/evaluator.rb} +29 -13
- data/lib/{engine → splitclient-rb/engine}/parser/partition.rb +0 -0
- data/lib/{engine → splitclient-rb/engine}/parser/split_adapter.rb +0 -0
- data/lib/{exceptions → splitclient-rb/exceptions}/sdk_blocker_timeout_expired_exception.rb +0 -0
- data/lib/splitclient-rb/localhost_utils.rb +1 -1
- data/lib/splitclient-rb/split_config.rb +7 -4
- data/lib/splitclient-rb/utilitites.rb +41 -0
- data/lib/splitclient-rb/version.rb +1 -1
- data/splitclient-rb.gemspec +6 -8
- metadata +76 -100
- data/lib/engine/models/label.rb +0 -13
- data/lib/engine/partitions/treatments.rb +0 -36
- 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
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
66
|
+
return treatment_hash(Models::Label::NO_RULE_MATCHED, split[:defaultTreatment], split[:changeNumber])
|
51
67
|
else
|
52
|
-
return
|
68
|
+
return treatment_hash(c[:label], result, split[:changeNumber])
|
53
69
|
end
|
54
70
|
end
|
55
71
|
end
|
56
72
|
|
57
|
-
|
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
|
98
|
+
def treatment_hash(label, treatment, change_number = nil)
|
83
99
|
{ label: label, treatment: treatment, change_number: change_number }
|
84
100
|
end
|
85
101
|
|
File without changes
|
File without changes
|
File without changes
|
@@ -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.
|
338
|
-
|
339
|
-
|
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
|
data/splitclient-rb.gemspec
CHANGED
@@ -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", "
|
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 "
|
37
|
-
spec.add_runtime_dependency "
|
38
|
-
spec.add_runtime_dependency "
|
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.
|
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-
|
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
|
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
|
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: '
|
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: '
|
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: '
|
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: '
|
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
|