jcw 0.1.2 → 0.1.3

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: e8fc0e3e0c34e18f281b228fc45782f30109ba9125c6730ff170982f9c683e5c
4
- data.tar.gz: 4ac948f3822db7891f59919616302077757c6ef0a71f6e2a4a09c06ced413241
3
+ metadata.gz: c7621b3db92b4172f29ae46a914d6f5a33611f276dfaa17d1effeff36f16c68b
4
+ data.tar.gz: c9ac2ea12ee2862fcb762673dd5285e7422b86fe91c38a39f9fa66bd890fa83c
5
5
  SHA512:
6
- metadata.gz: 9e75ea2fb98b023b70b2cf7b84074a9ec4a6bef9f7a901d48da09ac6a9f1b63c4b9b6d9838f83658729e602c27bcf739fa869437d95022bd0b92060f92cf3239
7
- data.tar.gz: 5b5c8c1248f89e9fc28a82b3dab536da66115c34e03254cbb3822e5123076998c4b9674969343766f9b51a6ad14bcf78d99fa6620a353af549f4536968d7a3d7
6
+ metadata.gz: e6558c6b64a50a283c6e9a97024ee8191fd595bb73b071ae84259ec7a61d51ab4046b6f70e33f335bedf7888f791f170375e2b7f3ab428a373259716c9acfe19
7
+ data.tar.gz: c5d6da1d532632920fdce571c254737654d0e37c7aca2d89bf8852126ae15882c3f4965461b341ecfcbf04add3a366010b103d5cd83cf2fe1df8b9c71860e15d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- jcw (0.1.2)
4
+ jcw (0.1.3)
5
5
  activesupport (>= 5.0)
6
6
  httprb-opentracing (~> 0.4.0)
7
7
  jaeger-client (~> 1.1.0)
@@ -74,12 +74,12 @@ GEM
74
74
  method_source (1.0.0)
75
75
  mini_portile2 (2.6.1)
76
76
  minitest (5.14.4)
77
- nokogiri (1.12.3)
77
+ nokogiri (1.12.5)
78
78
  mini_portile2 (~> 2.6.1)
79
79
  racc (~> 1.4)
80
- nokogiri (1.12.3-x86_64-darwin)
80
+ nokogiri (1.12.5-x86_64-darwin)
81
81
  racc (~> 1.4)
82
- nokogiri (1.12.3-x86_64-linux)
82
+ nokogiri (1.12.5-x86_64-linux)
83
83
  racc (~> 1.4)
84
84
  opentracing (0.5.0)
85
85
  parallel (1.20.1)
@@ -164,7 +164,7 @@ GEM
164
164
  simplecov-lcov (0.8.0)
165
165
  simplecov_json_formatter (0.1.3)
166
166
  thor (1.1.0)
167
- thrift (0.14.2)
167
+ thrift (0.15.0)
168
168
  tzinfo (2.0.4)
169
169
  concurrent-ruby (~> 1.0)
170
170
  unf (0.1.4)
data/README.md CHANGED
@@ -25,7 +25,7 @@ gem install jcw
25
25
  ```
26
26
 
27
27
  ```ruby
28
- require 'jcw'
28
+ require 'jcw'
29
29
  ```
30
30
 
31
31
  ## Usage
@@ -68,17 +68,20 @@ Rails.application.middleware.use(JCW::RackTracer)
68
68
  # Not recommended for UDP sender, because default max packet size is 65,000 bytes.
69
69
  Rails.application.config.tap do |config|
70
70
  config.middleware.use(
71
- ::JCW::RackTracer,
72
- on_finish_span:
73
- -> (span) { ::JCW::JaegerLogger.current.logs.each { |log| span.log_kv(**log) } },
71
+ JCW::RackTracer,
72
+ on_finish_span: lambda do |span|
73
+ JCW::Logger.current.logs.each { |log| span.log_kv(**log) }
74
+ JCW::Logger.current.clear # Do not forget to avoid memory leaks
75
+ end,
74
76
  )
75
- config.logger.extend(::JCW::JaegerLoggerExtension)
77
+
78
+ config.logger.extend(JCW::LoggerExtension)
76
79
  end
77
80
  ```
78
81
  - `config.subscribe_to` - not recommended for UDP sender, because default max packet size is 65,000 bytes.
79
82
 
80
83
  ### Contributing
81
-
84
+
82
85
  - Fork it ( https://github.com/Cado-Labs/jcw )
83
86
  - Create your feature branch (`git checkout -b feature/my-new-feature`)
84
87
  - Commit your changes (`git commit -am '[feature_context] Add some feature'`)
data/lib/jcw/init.rb CHANGED
@@ -41,11 +41,10 @@ module JCW
41
41
  end
42
42
 
43
43
  def activate_subscribers
44
- subscribers = config.subscribe_to
45
- return if subscribers.blank?
44
+ events = config.subscribe_to
45
+ return if events.blank?
46
46
 
47
- Tracing.register_subscribers(subscribers)
48
- Tracing.subscribe_tracing_events
47
+ events.each { |event| JCW::Subscriber.subscribe_to_event!(event) }
49
48
  end
50
49
 
51
50
  def init_http_tracer
@@ -1,26 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JCW
4
- class Subscriber
5
- class << self
6
- def subscribe_to_event!(event_name)
7
- ActiveSupport::Notifications.subscribe(event_name) do |*args|
8
- (span = OpenTracing.scope_manager.active&.span) or next
9
- event = ActiveSupport::Notifications::Event.new(*args)
10
- span.log_kv(context: span_context(event))
11
- end
4
+ module Subscriber
5
+ extend self
6
+
7
+ IGNORED_PAYLOAD_KEYS = %i[request response headers exception exception_object].freeze
8
+
9
+ def subscribe_to_event!(event)
10
+ ActiveSupport::Notifications.subscribe(event) do |name, _start, _finish, _uid, payload|
11
+ add(name, payload)
12
12
  end
13
+ end
13
14
 
14
- private
15
+ def add(name, payload)
16
+ # skip Rails internal events
17
+ return if name.start_with?("!")
15
18
 
16
- def span_context(event)
17
- {
18
- name: event.name,
19
- time: event.time,
20
- payload: event.payload.to_s,
21
- transaction_id: event.transaction_id,
22
- }.as_json
19
+ span = OpenTracing.scope_manager.active&.span
20
+ return if span.blank?
21
+
22
+ if payload.is_a?(Hash)
23
+ # we should only mutate the copy of the payload
24
+ payload = payload.dup
25
+ IGNORED_PAYLOAD_KEYS.each { |key| payload.delete(key) if payload.key?(key) }
23
26
  end
27
+
28
+ span.log_kv(message: name, context: JSON.dump(payload))
24
29
  end
25
30
  end
26
31
  end
data/lib/jcw/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JCW
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
data/lib/jcw/wrapper.rb CHANGED
@@ -17,7 +17,6 @@ module JCW
17
17
  end
18
18
  end
19
19
 
20
- require_relative "tracing"
21
20
  require_relative "init"
22
21
  require_relative "subscriber"
23
22
  require_relative "http_tracer"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jcw
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Starovojtov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-01 00:00:00.000000000 Z
11
+ date: 2021-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -248,7 +248,6 @@ files:
248
248
  - lib/jcw/logger_extension.rb
249
249
  - lib/jcw/rack_tracer.rb
250
250
  - lib/jcw/subscriber.rb
251
- - lib/jcw/tracing.rb
252
251
  - lib/jcw/version.rb
253
252
  - lib/jcw/wrapper.rb
254
253
  homepage: https://github.com/Cado-Labs/jcw
data/lib/jcw/tracing.rb DELETED
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JCW
4
- module Tracing
5
- class << self
6
- attr_reader :subscribers
7
-
8
- def register_subscribers(subscribers)
9
- @subscribers = subscribers
10
- end
11
-
12
- def subscribe_tracing_events
13
- subscribers.each { |subscriber| Subscriber.subscribe_to_event!(subscriber) }
14
- end
15
- end
16
- end
17
- end