boom_nats 0.1.3 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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