stack-service-base 0.0.40 → 0.0.42
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/stack-service-base/nats_patch_1.rb +56 -0
- data/lib/stack-service-base/nats_service.rb +5 -4
- data/lib/stack-service-base/public/ssbase/main.js +0 -0
- data/lib/stack-service-base/sinatra_ext.rb +14 -0
- data/lib/stack-service-base/version.rb +1 -1
- data/lib/stack-service-base/views/ssbase_info.slim +10 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d8422094d64bc6f88ee241aaf48e20e2a52c48a455e55187a93cdb341f5bc11
|
4
|
+
data.tar.gz: 377c45e41d7e90add16991a37b3ea51791f7e8e7b79cb3b950be8d381749e2c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6f4103f65c689879ee85dbc8177d53d6938618597ecf2e1cb82182a49bc56a42f4c6bc34760fcd3e3608eb80b1838fefc87441b09b6fa6ee5e8c81847cb1bee
|
7
|
+
data.tar.gz: bed28f2ebc7a28a64b40a07cf5cb0ea8c9032f3ad1eab7708a6bce878eafb606478fbae6a56fc4c2b10a33a8cb33d9c52d3664055ffec15471d9c336947c418e
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'nats'
|
2
|
+
require 'nats/io/websocket'
|
3
|
+
|
4
|
+
# TODO PATCH https://github.com/nats-io/nats-pure.rb/issues/171
|
5
|
+
module NATS
|
6
|
+
module IO
|
7
|
+
class WebSocket
|
8
|
+
def initialize(options = {})
|
9
|
+
super
|
10
|
+
@options = options
|
11
|
+
end
|
12
|
+
|
13
|
+
def connect
|
14
|
+
super
|
15
|
+
|
16
|
+
setup_tls! if @uri.scheme == "wss" # WebSocket connection must be made over TLS from the beginning
|
17
|
+
|
18
|
+
@handshake = ::WebSocket::Handshake::Client.new url: @uri.to_s, **@options
|
19
|
+
@frame = ::WebSocket::Frame::Incoming::Client.new
|
20
|
+
@handshaked = false
|
21
|
+
|
22
|
+
@socket.write @handshake.to_s
|
23
|
+
|
24
|
+
until @handshaked
|
25
|
+
@handshake << method(:read).super_method.call(MAX_SOCKET_READ_BYTES)
|
26
|
+
if @handshake.finished?
|
27
|
+
@handshaked = true
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Client
|
35
|
+
def create_socket
|
36
|
+
socket_class = case @uri.scheme
|
37
|
+
when "nats", "tls"
|
38
|
+
NATS::IO::Socket
|
39
|
+
when "ws", "wss"
|
40
|
+
# require_relative "websocket"
|
41
|
+
# TODO Local patch
|
42
|
+
require 'nats/io/websocket'
|
43
|
+
NATS::IO::WebSocket
|
44
|
+
else
|
45
|
+
raise NotImplementedError, "#{@uri.scheme} protocol is not supported, check NATS cluster URL spelling"
|
46
|
+
end
|
47
|
+
|
48
|
+
socket_class.new(
|
49
|
+
uri: @uri,
|
50
|
+
tls: {context: tls_context, hostname: @hostname},
|
51
|
+
connect_timeout: NATS::IO::DEFAULT_CONNECT_TIMEOUT,
|
52
|
+
**@initial_options # TODO PATCH https://github.com/nats-io/nats-pure.rb/issues/171
|
53
|
+
)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -1,13 +1,14 @@
|
|
1
1
|
require "nats"
|
2
|
+
require_relative 'nats_patch_1'
|
2
3
|
|
3
|
-
NATS_ENABLED = ENV['
|
4
|
+
NATS_ENABLED = ENV['SWARM_NATS_URL'].to_s != ''
|
4
5
|
|
5
|
-
|
6
|
+
SWARM_NATS_URL = ENV['SWARM_NATS_URL']# || 'nats://nats_single:4222'
|
6
7
|
NATS_STACK_NAME = ENV['STACK_NAME'] || 'undefined_stack'
|
7
8
|
NATS_SERVICE_NAME = ENV['STACK_SERVICE_NAME'] || 'undefined_service'
|
8
9
|
|
9
10
|
ENV['NATS_RECONNECT'] ||= 'true'
|
10
|
-
ENV['NATS_RECONNECT_TIME_WAIT'] ||= '
|
11
|
+
ENV['NATS_RECONNECT_TIME_WAIT'] ||= '30'
|
11
12
|
ENV['NATS_MAX_RECONNECT_ATTEMPTS'] ||= '-1'
|
12
13
|
|
13
14
|
module NATS
|
@@ -19,7 +20,7 @@ $nats_client = nil
|
|
19
20
|
def initialize_nats_service
|
20
21
|
LOGGER.info "Initializing NATS service"
|
21
22
|
|
22
|
-
$nats_client = NATS.connect
|
23
|
+
$nats_client = NATS.connect SWARM_NATS_URL
|
23
24
|
|
24
25
|
service = $nats_client.services.add(
|
25
26
|
name: "#{NATS_SERVICE_NAME}_#{NATS_STACK_NAME}",
|
File without changes
|
@@ -7,6 +7,17 @@ if Bundler.definition.specs.any? { |spec| spec.name == 'sinatra' }
|
|
7
7
|
|
8
8
|
module Sinatra
|
9
9
|
module SSBaseSinatra
|
10
|
+
module AddPublic
|
11
|
+
def static!(options={})
|
12
|
+
super
|
13
|
+
path = File.expand_path "#{__dir__}/public/#{Sinatra::Base::URI_INSTANCE.unescape(request.path_info)}"
|
14
|
+
return unless File.file?(path)
|
15
|
+
|
16
|
+
env['sinatra.static_file'] = path
|
17
|
+
cache_control(*settings.static_cache_control) if settings.static_cache_control?
|
18
|
+
send_file path, options.merge(disposition: nil)
|
19
|
+
end
|
20
|
+
end
|
10
21
|
module FindTemplate
|
11
22
|
def find_template(views, name, engine, &block)
|
12
23
|
super
|
@@ -21,6 +32,9 @@ if Bundler.definition.specs.any? { |spec| spec.name == 'sinatra' }
|
|
21
32
|
def self.registered(app)
|
22
33
|
# app.helpers MyHelpers
|
23
34
|
Sinatra::Templates.prepend FindTemplate
|
35
|
+
Sinatra::Base.prepend AddPublic
|
36
|
+
app.set :static, true
|
37
|
+
|
24
38
|
app.get '/ssbase_info' do
|
25
39
|
slim :ssbase_info
|
26
40
|
end
|
@@ -1,3 +1,11 @@
|
|
1
|
+
script src='/ssbase/main.js'
|
2
|
+
|
1
3
|
h1 SSBase info
|
2
|
-
|
3
|
-
|
4
|
+
pre _
|
5
|
+
version = #{StackServiceBase::VERSION}
|
6
|
+
OTEL_ENABLED = #{::OTEL_ENABLED}
|
7
|
+
PERFORMANCE = #{::PERFORMANCE}
|
8
|
+
QUIET = #{::QUIET}
|
9
|
+
NATS_ENABLED = #{::NATS_ENABLED}
|
10
|
+
CONSOLE_LEVEL = #{ENV['CONSOLE_LEVEL']}
|
11
|
+
CONSOLE_OUTPUT = #{ENV['CONSOLE_OUTPUT']}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stack-service-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.42
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artyom B
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-09-
|
11
|
+
date: 2025-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -220,6 +220,7 @@ files:
|
|
220
220
|
- lib/stack-service-base/database.rb
|
221
221
|
- lib/stack-service-base/fiber_pool.rb
|
222
222
|
- lib/stack-service-base/logging.rb
|
223
|
+
- lib/stack-service-base/nats_patch_1.rb
|
223
224
|
- lib/stack-service-base/nats_service.rb
|
224
225
|
- lib/stack-service-base/open_telemetry.rb
|
225
226
|
- lib/stack-service-base/project_template/github/.github/workflows/main.yml
|
@@ -243,6 +244,7 @@ files:
|
|
243
244
|
- lib/stack-service-base/project_template/home/src/spec/spec_helper.rb
|
244
245
|
- lib/stack-service-base/prometheus.rb
|
245
246
|
- lib/stack-service-base/prometheus_parser.rb
|
247
|
+
- lib/stack-service-base/public/ssbase/main.js
|
246
248
|
- lib/stack-service-base/rack_helpers.rb
|
247
249
|
- lib/stack-service-base/sinatra_ext.rb
|
248
250
|
- lib/stack-service-base/version.rb
|