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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4e0a13dec430cf83f2586d762576a227da5d874d7e20faded15aca72017ef34
4
- data.tar.gz: 849f36ac37f2d1a868fbeffe698dab95bd47c942ae21ad19f4df7413b74760ac
3
+ metadata.gz: 0d8422094d64bc6f88ee241aaf48e20e2a52c48a455e55187a93cdb341f5bc11
4
+ data.tar.gz: 377c45e41d7e90add16991a37b3ea51791f7e8e7b79cb3b950be8d381749e2c2
5
5
  SHA512:
6
- metadata.gz: 7b8e464403a4634bfa8cca3852a870dd88bd123e983a51800aec71652097c5e36ec87ec5fdf0d342e6e3facd8d133c8be4483c008ce1353bc88f6764b1c885c7
7
- data.tar.gz: 84f2fe56bab214f9a5d61e4550dd02dfdb68afc4914929d3e8cb70137eb6c67bb72cf397cf91c0e46bc8b91c54b4e2055a855cc55c1b5a5a7e94729a7278e439
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['NATS_URL'].to_s != ''
4
+ NATS_ENABLED = ENV['SWARM_NATS_URL'].to_s != ''
4
5
 
5
- NATS_URL = ENV['NATS_URL']# || 'nats://nats_single:4222'
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'] ||= '1000'
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 NATS_URL
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,3 @@
1
1
  module StackServiceBase
2
- VERSION = '0.0.40'
2
+ VERSION = '0.0.42'
3
3
  end
@@ -1,3 +1,11 @@
1
+ script src='/ssbase/main.js'
2
+
1
3
  h1 SSBase info
2
- p
3
- | version = #{StackServiceBase::VERSION}
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.40
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-29 00:00:00.000000000 Z
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