boom_nats 0.1.3 → 0.1.5

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: de9e219887d452f25ad3dc6bfc88fc3a3bb24762b502f8d18b367307f1f1fe4f
4
- data.tar.gz: 423a9ecd28fc861e4c0e17305ce8d18ce810075d57c0b46a76ae4d0516fd1803
3
+ metadata.gz: edc24ec388439c93feccc06d27ec06d159563d4f384cf7059c733c967bf131da
4
+ data.tar.gz: b91fff5bff4336236bbd93c6f4af52c0a291fab22baadb97f090e4c204351ce5
5
5
  SHA512:
6
- metadata.gz: eb4d67f6eb722b22f841e3a9dcda33c97cfcc2c0640c182d17045901686782332d22fd257e6886b95ac8466c35d0f8d6c8b4badd09e2a64d2d3b625127f6e0a5
7
- data.tar.gz: ee6f3f687fe05a09f296008fa8f8793dde6ad7a6f47a24937aeba7e90c167c112c247d68f4512f6725befbb511ac5c34e6f51336510be67dd791cfae2af08e0d
6
+ metadata.gz: b08cc8d393e0fcc86b2915bbab71ce21e54b78ea4823072ae12c1c1f2780c6409499e4ab4774347198f4bc360663ce88484041c3dc6286fbe039d321e9f8d06b
7
+ data.tar.gz: 216a954d729a1e9e7cd7aab5a68d4d27d7d258b2807d5b3240158ef7743aeb5943ec8bb07dbc3f03bb26d54e455bfc7237285520348e48405292b2654a11ad2a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## v0.1.4 - 2021-10-19
2
+
3
+ - FEAT: add initializers callback system after application start
4
+
1
5
  ## v0.1.3 - 2021-10-06
2
6
 
3
7
  - BUG: fix Zeitwerk eager loading classes Rails::Railtie class not found
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- boom_nats (0.1.3)
4
+ boom_nats (0.1.5)
5
5
  activesupport (>= 2.1)
6
6
  concurrent-ruby-edge (~> 0.6, < 1.0)
7
7
  nats (>= 0.11.0, < 1.0)
@@ -9,6 +9,11 @@ module BoomNats
9
9
  def initialize
10
10
  @route_topics = []
11
11
  @subscriptions = []
12
+ @callbacks = {
13
+ before: [],
14
+ after: []
15
+ }
16
+
12
17
  @mutex = Mutex.new
13
18
  end
14
19
 
@@ -32,18 +37,43 @@ module BoomNats
32
37
  NATS
33
38
  end
34
39
 
40
+ def on_before(&block)
41
+ @callbacks[:before] << block
42
+ end
43
+
44
+ def on_after(&block)
45
+ @callbacks[:after] << block
46
+ end
47
+
48
+ def error_as_json(msg, topic, error)
49
+ {
50
+ message: msg,
51
+ topic: topic,
52
+ error: "#{error.class}: #{error.message}",
53
+ backtrace: error.backtrace,
54
+ status: "error"
55
+ }.to_json
56
+ end
57
+
35
58
  def start
36
59
  Thread.new do
60
+ @callbacks[:before].each { |callback| callback.call(self) }
61
+
37
62
  nats_connect do |nats|
38
63
  @route_topics.each do |rt|
39
64
  @subscriptions << nats.subscribe(rt.topic, rt.options) do |msg, reply, _sub|
40
65
  rt.executor.new(msg, reply, nats, rt.serializer, rt.parser)
66
+ rescue StandardError => e
67
+ BoomNats.logger.error "BoomNats::error: #{e.message}"
68
+ nats.publish(reply, error_as_json(msg, rt.topic, e)) unless reply.nil?
41
69
  end
42
70
  end
43
71
 
44
72
  BoomNats.logger.debug "BoomNats::started"
45
73
 
46
74
  prepare_trap unless defined?(Rails::Railtie)
75
+
76
+ @callbacks[:after].each { |callback| callback.call(self) }
47
77
  end
48
78
  end
49
79
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BoomNats
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.5"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boom_nats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Welington Sampaio
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-06 00:00:00.000000000 Z
11
+ date: 2024-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport