jcw 0.1.2 → 0.1.3

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: 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