rubypitaya 3.17.1 → 3.17.2
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/lib/rubypitaya/app-template/Gemfile +1 -1
- data/lib/rubypitaya/app-template/Gemfile.lock +2 -2
- data/lib/rubypitaya/app-template/app/setup/rubypitaya.yml +3 -1
- data/lib/rubypitaya/app-template/docker/dev/Dockerfile +1 -1
- data/lib/rubypitaya/app-template/docker/prod/Dockerfile +2 -2
- data/lib/rubypitaya/core/etcd_connector.rb +1 -0
- data/lib/rubypitaya/core/http_routes.rb +1 -1
- data/lib/rubypitaya/core/main.rb +6 -3
- data/lib/rubypitaya/core/nats_connector.rb +33 -11
- data/lib/rubypitaya/version.rb +1 -1
- metadata +19 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 83ca819c25297eb060cbe0e0f1b4e8bb8f69b981a5a9e9cc9f7026774bb90fec
|
|
4
|
+
data.tar.gz: cfc9294385aebc33497ea547ace19a6085cdf7b611f133ff8a8e97e444c21aa6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 15b9c24c2a57d2d08f578e569d59ccdd9b1b72a358ba2b89821eac03e0b0005073ccc1badc60f54360cf5b7c00b3d7d86ecb7f70eb8a62be56cc3c9f19981a26
|
|
7
|
+
data.tar.gz: ee05134dd53af44e3e6d00bcf1ce26951692270e842966d4d58640ce6ca4bb9695485d1e99663d7bc5cc4210485b8b31ffad1ad105dfa8c8641a61d954701cee
|
|
@@ -105,7 +105,7 @@ GEM
|
|
|
105
105
|
rspec-support (~> 3.12.0)
|
|
106
106
|
rspec-support (3.12.1)
|
|
107
107
|
ruby2_keywords (0.0.5)
|
|
108
|
-
rubypitaya (3.17.
|
|
108
|
+
rubypitaya (3.17.2)
|
|
109
109
|
activerecord (= 7.1.2)
|
|
110
110
|
etcdv3 (= 0.11.6)
|
|
111
111
|
google-protobuf (= 3.25.2)
|
|
@@ -144,7 +144,7 @@ DEPENDENCIES
|
|
|
144
144
|
listen (= 3.8.0)
|
|
145
145
|
pry (= 0.14.2)
|
|
146
146
|
rspec (= 3.12.0)
|
|
147
|
-
rubypitaya (= 3.17.
|
|
147
|
+
rubypitaya (= 3.17.2)
|
|
148
148
|
sinatra-contrib (= 3.2.0)
|
|
149
149
|
|
|
150
150
|
BUNDLED WITH
|
|
@@ -2,6 +2,7 @@ server:
|
|
|
2
2
|
name: 'rubypitaya'
|
|
3
3
|
environment: development
|
|
4
4
|
cheats: true
|
|
5
|
+
threads: 5
|
|
5
6
|
|
|
6
7
|
nats:
|
|
7
8
|
url: 'nats://nats:4222'
|
|
@@ -22,7 +23,8 @@ database:
|
|
|
22
23
|
name: 'ruby_pitaya'
|
|
23
24
|
|
|
24
25
|
http:
|
|
26
|
+
enabled: true
|
|
25
27
|
auth:
|
|
26
28
|
user: 'user'
|
|
27
29
|
pass: 'pass'
|
|
28
|
-
enabled:
|
|
30
|
+
enabled: false
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
FROM ruby:3.2.
|
|
1
|
+
FROM ruby:3.2.3-slim as builder
|
|
2
2
|
|
|
3
3
|
RUN apt update && \
|
|
4
4
|
apt install -y --no-install-recommends \
|
|
@@ -26,7 +26,7 @@ RUN rm -rf /usr/local/bundle/cache && \
|
|
|
26
26
|
|
|
27
27
|
# RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
|
|
28
28
|
|
|
29
|
-
FROM ruby:3.2.
|
|
29
|
+
FROM ruby:3.2.3-slim
|
|
30
30
|
|
|
31
31
|
ENV LANG=C.UTF-8
|
|
32
32
|
ENV LC_ALL=C.UTF-8
|
data/lib/rubypitaya/core/main.rb
CHANGED
|
@@ -59,8 +59,9 @@ module RubyPitaya
|
|
|
59
59
|
@etcd_connector.connect
|
|
60
60
|
|
|
61
61
|
@nats_address = @setup['rubypitaya.nats.url']
|
|
62
|
+
@nats_n_threads = @setup['rubypitaya.server.threads']
|
|
62
63
|
@nats_connector = NatsConnector.new(@nats_address, @service_uuid,
|
|
63
|
-
@server_name)
|
|
64
|
+
@server_name, @nats_n_threads, @log)
|
|
64
65
|
|
|
65
66
|
@database_connector = DatabaseConnector.new(@setup, @log)
|
|
66
67
|
@database_connector.connect
|
|
@@ -99,6 +100,9 @@ module RubyPitaya
|
|
|
99
100
|
end
|
|
100
101
|
|
|
101
102
|
def run_http
|
|
103
|
+
is_http_enabled = @setup.fetch('rubypitaya.http.enabled', false)
|
|
104
|
+
return unless is_http_enabled
|
|
105
|
+
|
|
102
106
|
HttpRoutes.set :log, @log
|
|
103
107
|
HttpRoutes.set :services, @services
|
|
104
108
|
HttpRoutes.set :setup, @setup
|
|
@@ -161,8 +165,7 @@ module RubyPitaya
|
|
|
161
165
|
|
|
162
166
|
session_id = request[:session][:id]
|
|
163
167
|
session_uid = request[:session].fetch(:uid, '')
|
|
164
|
-
session_data = request[:session][:data]
|
|
165
|
-
session_data = JSON.parse(session_data, symbolize_names: true)
|
|
168
|
+
session_data = JSON.parse(request[:session][:data], symbolize_names: true)
|
|
166
169
|
frontend_id = request[:frontendID]
|
|
167
170
|
metadata = request[:metadata]
|
|
168
171
|
metadata = JSON.parse(metadata, symbolize_names: true)
|
|
@@ -15,10 +15,12 @@ module RubyPitaya
|
|
|
15
15
|
MESSAGE_TYPE_RESPONSE = 2
|
|
16
16
|
MESSAGE_TYPE_PUSH = 3
|
|
17
17
|
|
|
18
|
-
def initialize(nats_address, server_uuid, server_name)
|
|
18
|
+
def initialize(nats_address, server_uuid, server_name, n_threads, log)
|
|
19
|
+
@nats_address = nats_address
|
|
19
20
|
@server_uuid = server_uuid
|
|
20
21
|
@server_name = server_name
|
|
21
|
-
@
|
|
22
|
+
@n_threads = n_threads
|
|
23
|
+
@log = log
|
|
22
24
|
@nats = nil
|
|
23
25
|
@subscribe = nil
|
|
24
26
|
end
|
|
@@ -29,29 +31,49 @@ module RubyPitaya
|
|
|
29
31
|
@nats = NATS.connect(servers: [@nats_address])
|
|
30
32
|
@subscribe = @nats.subscribe(subscribe_topic)
|
|
31
33
|
|
|
34
|
+
@queue = Thread::Queue.new
|
|
35
|
+
@threads = []
|
|
36
|
+
|
|
37
|
+
@n_threads.times do |i|
|
|
38
|
+
@threads << Thread.new do
|
|
39
|
+
loop do
|
|
40
|
+
data, reply = @queue.pop
|
|
41
|
+
|
|
42
|
+
request = NatsRequest.decode(data).to_h
|
|
43
|
+
|
|
44
|
+
response = yield request
|
|
45
|
+
|
|
46
|
+
nats_response = NatsResponse.new(data: response.force_encoding('ascii-8bit'))
|
|
47
|
+
nats_response_encoded = NatsResponse.encode(nats_response)
|
|
48
|
+
|
|
49
|
+
@nats.publish(reply, nats_response_encoded)
|
|
50
|
+
|
|
51
|
+
rescue Exception => error
|
|
52
|
+
@log.error "NATS ERROR: #{error.message}} \n #{error.backtrace.join("\n")}"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
32
57
|
loop do
|
|
33
58
|
message = @subscribe.pending_queue.pop
|
|
34
59
|
@subscribe.synchronize do
|
|
35
60
|
@subscribe.pending_size -= message.data.size
|
|
36
61
|
end
|
|
37
62
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
response = yield request
|
|
41
|
-
|
|
42
|
-
nats_response = NatsResponse.new(data: response.force_encoding('ascii-8bit'))
|
|
43
|
-
nats_response_encoded = NatsResponse.encode(nats_response)
|
|
44
|
-
|
|
45
|
-
@nats.publish(message.reply, nats_response_encoded)
|
|
63
|
+
@queue << [message.data, message.reply]
|
|
46
64
|
end
|
|
47
65
|
end
|
|
48
66
|
|
|
49
67
|
def disconnect
|
|
50
68
|
@subscribe.unsubscribe unless @subscribe.nil?
|
|
51
69
|
@nats.close unless @nats.nil?
|
|
70
|
+
@threads.map(&:kill) unless @threads.nil?
|
|
71
|
+
@queue.close unless @queue.nil?
|
|
52
72
|
|
|
53
|
-
@nats = nil
|
|
54
73
|
@subscribe = nil
|
|
74
|
+
@nats = nil
|
|
75
|
+
@queue = nil
|
|
76
|
+
@threads = nil
|
|
55
77
|
end
|
|
56
78
|
|
|
57
79
|
def push_to_frontend(session, message_route, payload)
|
data/lib/rubypitaya/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rubypitaya
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.17.
|
|
4
|
+
version: 3.17.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Luciano Prestes Cavalcanti
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-04-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: pg
|
|
@@ -16,42 +16,42 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - '='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 1.5.
|
|
19
|
+
version: 1.5.6
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - '='
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 1.5.
|
|
26
|
+
version: 1.5.6
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rake
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - '='
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 13.1
|
|
33
|
+
version: 13.2.1
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - '='
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 13.1
|
|
40
|
+
version: 13.2.1
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: redis
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - '='
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 5.0
|
|
47
|
+
version: 5.1.0
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - '='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 5.0
|
|
54
|
+
version: 5.1.0
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: etcdv3
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -128,14 +128,14 @@ dependencies:
|
|
|
128
128
|
requirements:
|
|
129
129
|
- - '='
|
|
130
130
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: 7.1.2
|
|
131
|
+
version: 7.1.3.2
|
|
132
132
|
type: :runtime
|
|
133
133
|
prerelease: false
|
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
135
|
requirements:
|
|
136
136
|
- - '='
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: 7.1.2
|
|
138
|
+
version: 7.1.3.2
|
|
139
139
|
- !ruby/object:Gem::Dependency
|
|
140
140
|
name: google-protobuf
|
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -170,56 +170,56 @@ dependencies:
|
|
|
170
170
|
requirements:
|
|
171
171
|
- - '='
|
|
172
172
|
- !ruby/object:Gem::Version
|
|
173
|
-
version: 3.
|
|
173
|
+
version: 3.13.0
|
|
174
174
|
type: :development
|
|
175
175
|
prerelease: false
|
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
|
177
177
|
requirements:
|
|
178
178
|
- - '='
|
|
179
179
|
- !ruby/object:Gem::Version
|
|
180
|
-
version: 3.
|
|
180
|
+
version: 3.13.0
|
|
181
181
|
- !ruby/object:Gem::Dependency
|
|
182
182
|
name: listen
|
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
|
184
184
|
requirements:
|
|
185
185
|
- - '='
|
|
186
186
|
- !ruby/object:Gem::Version
|
|
187
|
-
version: 3.
|
|
187
|
+
version: 3.9.0
|
|
188
188
|
type: :development
|
|
189
189
|
prerelease: false
|
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
|
191
191
|
requirements:
|
|
192
192
|
- - '='
|
|
193
193
|
- !ruby/object:Gem::Version
|
|
194
|
-
version: 3.
|
|
194
|
+
version: 3.9.0
|
|
195
195
|
- !ruby/object:Gem::Dependency
|
|
196
196
|
name: bundler
|
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
|
198
198
|
requirements:
|
|
199
199
|
- - '='
|
|
200
200
|
- !ruby/object:Gem::Version
|
|
201
|
-
version: 2.4.
|
|
201
|
+
version: 2.4.19
|
|
202
202
|
type: :development
|
|
203
203
|
prerelease: false
|
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
|
205
205
|
requirements:
|
|
206
206
|
- - '='
|
|
207
207
|
- !ruby/object:Gem::Version
|
|
208
|
-
version: 2.4.
|
|
208
|
+
version: 2.4.19
|
|
209
209
|
- !ruby/object:Gem::Dependency
|
|
210
210
|
name: cucumber
|
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
|
212
212
|
requirements:
|
|
213
213
|
- - '='
|
|
214
214
|
- !ruby/object:Gem::Version
|
|
215
|
-
version: 9.
|
|
215
|
+
version: 9.2.0
|
|
216
216
|
type: :development
|
|
217
217
|
prerelease: false
|
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
|
219
219
|
requirements:
|
|
220
220
|
- - '='
|
|
221
221
|
- !ruby/object:Gem::Version
|
|
222
|
-
version: 9.
|
|
222
|
+
version: 9.2.0
|
|
223
223
|
- !ruby/object:Gem::Dependency
|
|
224
224
|
name: sinatra-contrib
|
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -387,7 +387,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
387
387
|
- !ruby/object:Gem::Version
|
|
388
388
|
version: '0'
|
|
389
389
|
requirements: []
|
|
390
|
-
rubygems_version: 3.4.
|
|
390
|
+
rubygems_version: 3.4.19
|
|
391
391
|
signing_key:
|
|
392
392
|
specification_version: 4
|
|
393
393
|
summary: Create servers with pitaya
|