splitclient-rb 7.3.5.pre.rc5 → 8.0.0.pre.rc1
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/.github/workflows/ci.yml +1 -7
- data/.rubocop.yml +1 -1
- data/Rakefile +1 -8
- data/lib/splitclient-rb/cache/senders/impressions_adapter/memory_sender.rb +2 -2
- data/lib/splitclient-rb/cache/senders/impressions_adapter/redis_sender.rb +0 -2
- data/lib/splitclient-rb/engine/api/client.rb +0 -23
- data/lib/splitclient-rb/engine/api/telemetry_api.rb +2 -2
- data/lib/splitclient-rb/engine/push_manager.rb +14 -11
- data/lib/splitclient-rb/telemetry/redis/redis_init_producer.rb +1 -1
- data/lib/splitclient-rb/telemetry/sync_task.rb +11 -11
- data/lib/splitclient-rb/version.rb +1 -1
- data/lib/splitclient-rb.rb +0 -1
- data/splitclient-rb.gemspec +3 -5
- metadata +7 -23
- data/Appraisals +0 -10
- data/lib/splitclient-rb/engine/api/faraday_adapter/patched_net_http_persistent.rb +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1959ef83640b436c648273ee5971c2a0d9b16af8a3344d9d4b3b544da2bbbe7c
|
4
|
+
data.tar.gz: d37340012997849e1ee3f886696347efd0e6f956051c299f9449b12630a5f193
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a7f3ff299c0617afb4a35733a4e50e229ebc8c6036b084efca91bc1e390f7992738ab9ed6a64448dde4d2c4c0a91f11d50dea0eb71a0c785c78b39fc0bd4619
|
7
|
+
data.tar.gz: '08450153e746294a69e3b5e710172a084f1fec246d2b0843e7b16f6da330f1cd0073771deabe8297ec86eea0ae7746faa5d5007a875f29d05862cb6f1d166069'
|
data/.github/workflows/ci.yml
CHANGED
data/.rubocop.yml
CHANGED
data/Rakefile
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
require 'bundler/gem_tasks'
|
4
4
|
require 'rspec/core/rake_task'
|
5
5
|
require 'rubocop/rake_task'
|
6
|
-
require 'appraisal'
|
7
6
|
|
8
7
|
Dir['tasks/**/*.rake'].each { |rake| load rake }
|
9
8
|
|
@@ -26,10 +25,4 @@ else
|
|
26
25
|
end
|
27
26
|
end
|
28
27
|
|
29
|
-
|
30
|
-
task :default do
|
31
|
-
sh 'appraisal install && rake appraisal && rake rubocop'
|
32
|
-
end
|
33
|
-
else
|
34
|
-
task default: %i[spec rubocop]
|
35
|
-
end
|
28
|
+
task default: %i[spec rubocop]
|
@@ -31,9 +31,9 @@ module SplitIoClient
|
|
31
31
|
def uniques_formatter(uniques)
|
32
32
|
return if uniques.nil? || uniques.empty?
|
33
33
|
|
34
|
-
to_return = {
|
34
|
+
to_return = { keys: [] }
|
35
35
|
uniques.each do |key, value|
|
36
|
-
to_return[:
|
36
|
+
to_return[:keys] << {
|
37
37
|
f: key,
|
38
38
|
ks: value.to_a
|
39
39
|
}
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'net/http/persistent'
|
4
|
-
|
5
3
|
module SplitIoClient
|
6
4
|
module Api
|
7
5
|
class Client
|
@@ -54,33 +52,12 @@ module SplitIoClient
|
|
54
52
|
private
|
55
53
|
|
56
54
|
def api_client
|
57
|
-
if needs_patched_net_http_persistent_adapter?
|
58
|
-
require 'splitclient-rb/engine/api/faraday_adapter/patched_net_http_persistent'
|
59
|
-
|
60
|
-
Faraday::Adapter.register_middleware(
|
61
|
-
net_http_persistent: SplitIoClient::FaradayAdapter::PatchedNetHttpPersistent
|
62
|
-
)
|
63
|
-
end
|
64
|
-
|
65
55
|
@api_client ||= Faraday.new do |builder|
|
66
56
|
builder.use SplitIoClient::FaradayMiddleware::Gzip
|
67
57
|
builder.adapter :net_http_persistent
|
68
58
|
end
|
69
59
|
end
|
70
60
|
|
71
|
-
def needs_patched_net_http_persistent_adapter?
|
72
|
-
new_net_http_persistent? && incompatible_faraday_version?
|
73
|
-
end
|
74
|
-
|
75
|
-
def incompatible_faraday_version?
|
76
|
-
version = Faraday::VERSION.split('.')[0..1]
|
77
|
-
version[0].to_i == 0 && version[1].to_i < 13
|
78
|
-
end
|
79
|
-
|
80
|
-
def new_net_http_persistent?
|
81
|
-
Net::HTTP::Persistent::VERSION.split('.').first.to_i >= 3
|
82
|
-
end
|
83
|
-
|
84
61
|
def common_headers(api_key)
|
85
62
|
{
|
86
63
|
'Authorization' => "Bearer #{api_key}",
|
@@ -18,9 +18,9 @@ module SplitIoClient
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def record_unique_keys(uniques)
|
21
|
-
return if uniques[:
|
21
|
+
return if uniques[:keys].empty?
|
22
22
|
|
23
|
-
post_telemetry("#{@config.telemetry_service_url}/
|
23
|
+
post_telemetry("#{@config.telemetry_service_url}/keys/ss", uniques, 'unique_keys')
|
24
24
|
rescue StandardError => e
|
25
25
|
@config.log_found_exception(__method__.to_s, e)
|
26
26
|
end
|
@@ -41,17 +41,20 @@ module SplitIoClient
|
|
41
41
|
private
|
42
42
|
|
43
43
|
def schedule_next_token_refresh(time)
|
44
|
-
@config.threads[:schedule_next_token_refresh] = Thread.new
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
44
|
+
@config.threads[:schedule_next_token_refresh] = Thread.new { refresh_token_task(time) }
|
45
|
+
end
|
46
|
+
|
47
|
+
def refresh_token_task(time)
|
48
|
+
@config.logger.debug("schedule_next_token_refresh refresh in #{time} seconds.") if @config.debug_enabled
|
49
|
+
|
50
|
+
sleep(time)
|
51
|
+
|
52
|
+
@config.logger.debug('schedule_next_token_refresh starting ...') if @config.debug_enabled
|
53
|
+
@sse_handler.stop
|
54
|
+
|
55
|
+
start_sse
|
56
|
+
rescue StandardError => e
|
57
|
+
@config.logger.debug("schedule_next_token_refresh error: #{e.inspect}") if @config.debug_enabled
|
55
58
|
end
|
56
59
|
|
57
60
|
def record_telemetry(time)
|
@@ -15,21 +15,21 @@ module SplitIoClient
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def stats_thread
|
18
|
-
@config.threads[:telemetry_stats_sender] = Thread.new
|
19
|
-
|
20
|
-
@config.logger.info('Starting Telemetry Sync Task')
|
18
|
+
@config.threads[:telemetry_stats_sender] = Thread.new { telemetry_sync_task }
|
19
|
+
end
|
21
20
|
|
22
|
-
|
23
|
-
|
21
|
+
def telemetry_sync_task
|
22
|
+
@config.logger.info('Starting Telemetry Sync Task')
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
rescue SplitIoClient::SDKShutdownException
|
28
|
-
@telemetry_synchronizer.synchronize_stats
|
24
|
+
loop do
|
25
|
+
sleep(@config.telemetry_refresh_rate)
|
29
26
|
|
30
|
-
|
31
|
-
end
|
27
|
+
@telemetry_synchronizer.synchronize_stats
|
32
28
|
end
|
29
|
+
rescue SplitIoClient::SDKShutdownException
|
30
|
+
@telemetry_synchronizer.synchronize_stats
|
31
|
+
|
32
|
+
@config.logger.info('Posting Telemetry due to shutdown')
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
data/lib/splitclient-rb.rb
CHANGED
@@ -49,7 +49,6 @@ require 'splitclient-rb/validators'
|
|
49
49
|
require 'splitclient-rb/split_factory_registry'
|
50
50
|
|
51
51
|
require 'splitclient-rb/engine/api/faraday_middleware/gzip'
|
52
|
-
require 'splitclient-rb/engine/api/faraday_adapter/patched_net_http_persistent'
|
53
52
|
require 'splitclient-rb/engine/api/client'
|
54
53
|
require 'splitclient-rb/engine/api/impressions'
|
55
54
|
require 'splitclient-rb/engine/api/segments'
|
data/splitclient-rb.gemspec
CHANGED
@@ -8,16 +8,15 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.name = 'splitclient-rb'
|
9
9
|
spec.version = SplitIoClient::VERSION
|
10
10
|
spec.authors = ['Split Software']
|
11
|
-
spec.email = ['
|
12
|
-
|
11
|
+
spec.email = ['mauro.sanz@split.io']
|
13
12
|
spec.summary = 'Ruby client for split SDK.'
|
14
13
|
spec.description = 'Ruby client for using split SDK.'
|
15
14
|
spec.homepage = 'https://github.com/splitio/ruby-client'
|
16
15
|
spec.license = 'Apache-2.0'
|
17
16
|
|
18
17
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec|features|ext)/}) }
|
19
|
-
|
20
18
|
spec.require_paths = ['lib']
|
19
|
+
spec.required_ruby_version = '>= 2.5.0'
|
21
20
|
|
22
21
|
if defined?(JRUBY_VERSION)
|
23
22
|
spec.platform = 'java'
|
@@ -37,7 +36,6 @@ Gem::Specification.new do |spec|
|
|
37
36
|
end
|
38
37
|
|
39
38
|
spec.add_development_dependency 'allocation_stats', '~> 0.1'
|
40
|
-
spec.add_development_dependency 'appraisal', '~> 2.4'
|
41
39
|
spec.add_development_dependency 'bundler', '~> 2.2'
|
42
40
|
spec.add_development_dependency 'pry', '~> 0.14'
|
43
41
|
spec.add_development_dependency 'pry-nav', '~> 1.0'
|
@@ -53,7 +51,7 @@ Gem::Specification.new do |spec|
|
|
53
51
|
|
54
52
|
spec.add_runtime_dependency 'bitarray', '~> 1.3'
|
55
53
|
spec.add_runtime_dependency 'concurrent-ruby', '~> 1.0'
|
56
|
-
spec.add_runtime_dependency 'faraday', '>=
|
54
|
+
spec.add_runtime_dependency 'faraday', '>= 1.1', '< 2.0'
|
57
55
|
spec.add_runtime_dependency 'json', '>= 1.8', '< 3.0'
|
58
56
|
spec.add_runtime_dependency 'jwt', '>= 1.0.0', '< 3.0'
|
59
57
|
spec.add_runtime_dependency 'lru_redux', '~> 1.1'
|
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
|
+
version: 8.0.0.pre.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Split Software
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: allocation_stats
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.1'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: appraisal
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '2.4'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '2.4'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: bundler
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -240,7 +226,7 @@ dependencies:
|
|
240
226
|
requirements:
|
241
227
|
- - ">="
|
242
228
|
- !ruby/object:Gem::Version
|
243
|
-
version: '
|
229
|
+
version: '1.1'
|
244
230
|
- - "<"
|
245
231
|
- !ruby/object:Gem::Version
|
246
232
|
version: '2.0'
|
@@ -250,7 +236,7 @@ dependencies:
|
|
250
236
|
requirements:
|
251
237
|
- - ">="
|
252
238
|
- !ruby/object:Gem::Version
|
253
|
-
version: '
|
239
|
+
version: '1.1'
|
254
240
|
- - "<"
|
255
241
|
- !ruby/object:Gem::Version
|
256
242
|
version: '2.0'
|
@@ -384,7 +370,7 @@ dependencies:
|
|
384
370
|
version: '0.3'
|
385
371
|
description: Ruby client for using split SDK.
|
386
372
|
email:
|
387
|
-
-
|
373
|
+
- mauro.sanz@split.io
|
388
374
|
executables: []
|
389
375
|
extensions:
|
390
376
|
- ext/murmurhash/extconf.rb
|
@@ -396,7 +382,6 @@ files:
|
|
396
382
|
- ".gitignore"
|
397
383
|
- ".rubocop.yml"
|
398
384
|
- ".simplecov"
|
399
|
-
- Appraisals
|
400
385
|
- CHANGES.txt
|
401
386
|
- CONTRIBUTORS-GUIDE.md
|
402
387
|
- Gemfile
|
@@ -451,7 +436,6 @@ files:
|
|
451
436
|
- lib/splitclient-rb/constants.rb
|
452
437
|
- lib/splitclient-rb/engine/api/client.rb
|
453
438
|
- lib/splitclient-rb/engine/api/events.rb
|
454
|
-
- lib/splitclient-rb/engine/api/faraday_adapter/patched_net_http_persistent.rb
|
455
439
|
- lib/splitclient-rb/engine/api/faraday_middleware/gzip.rb
|
456
440
|
- lib/splitclient-rb/engine/api/impressions.rb
|
457
441
|
- lib/splitclient-rb/engine/api/segments.rb
|
@@ -554,14 +538,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
554
538
|
requirements:
|
555
539
|
- - ">="
|
556
540
|
- !ruby/object:Gem::Version
|
557
|
-
version:
|
541
|
+
version: 2.5.0
|
558
542
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
559
543
|
requirements:
|
560
544
|
- - ">"
|
561
545
|
- !ruby/object:Gem::Version
|
562
546
|
version: 1.3.1
|
563
547
|
requirements: []
|
564
|
-
rubygems_version: 3.
|
548
|
+
rubygems_version: 3.3.5
|
565
549
|
signing_key:
|
566
550
|
specification_version: 4
|
567
551
|
summary: Ruby client for split SDK.
|
data/Appraisals
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SplitIoClient
|
4
|
-
module FaradayAdapter
|
5
|
-
class PatchedNetHttpPersistent < Faraday::Adapter::NetHttpPersistent
|
6
|
-
##
|
7
|
-
# Borrowed directly from the latest `NetHttpPersistent` adapter implementation.
|
8
|
-
#
|
9
|
-
# https://github.com/lostisland/faraday/blob/master/lib/faraday/adapter/net_http_persistent.rb
|
10
|
-
#
|
11
|
-
def net_http_connection(env)
|
12
|
-
@cached_connection ||=
|
13
|
-
if Net::HTTP::Persistent.instance_method(:initialize).parameters.first == [:key, :name]
|
14
|
-
Net::HTTP::Persistent.new(name: 'Faraday')
|
15
|
-
else
|
16
|
-
Net::HTTP::Persistent.new('Faraday')
|
17
|
-
end
|
18
|
-
|
19
|
-
proxy_uri = proxy_uri(env)
|
20
|
-
@cached_connection.proxy = proxy_uri if @cached_connection.proxy_uri != proxy_uri
|
21
|
-
@cached_connection
|
22
|
-
end
|
23
|
-
|
24
|
-
def proxy_uri(env)
|
25
|
-
proxy_uri = nil
|
26
|
-
if (proxy = env[:request][:proxy])
|
27
|
-
proxy_uri = ::URI::HTTP === proxy[:uri] ? proxy[:uri].dup : ::URI.parse(proxy[:uri].to_s)
|
28
|
-
proxy_uri.user = proxy_uri.password = nil
|
29
|
-
# awful patch for net-http-persistent 2.8 not unescaping user/password
|
30
|
-
(
|
31
|
-
class << proxy_uri;
|
32
|
-
self;
|
33
|
-
end).class_eval do
|
34
|
-
define_method(:user) { proxy[:user] }
|
35
|
-
define_method(:password) { proxy[:password] }
|
36
|
-
end if proxy[:user]
|
37
|
-
end
|
38
|
-
proxy_uri
|
39
|
-
end
|
40
|
-
|
41
|
-
def with_net_http_connection(env)
|
42
|
-
yield net_http_connection(env)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|