jcw 0.2.0 → 0.2.4

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: b501043d4201dca7900d5c39c79aa5ca89996188a68c02774011ea6b10baf73f
4
- data.tar.gz: 52bfd8000dd934155eddf3722ac6881f06988d7a84f660f71a66226a3218d529
3
+ metadata.gz: e7f97935444bb8d0285e96565c731f99e65df848573cc0257eb041dc90d3bf8b
4
+ data.tar.gz: a119efdd207f9ebf9965cb8a62fab5c8e3541db7535e5649a14808f02a0683f9
5
5
  SHA512:
6
- metadata.gz: f0641456763034ef58aa571f7f017892939512a7b8abfbefe7a73859cdfeb33ddab66a4037e069abf17e9c7563339a6ec876b3a479f75cecbb6477ffd1aabb25
7
- data.tar.gz: 7837034ab4915c1363339a58ee4e275fea2b8a3db0b61d1cf7eb209a513670b23ee55fbe417adb412fa0f6090fcb041c97c295a4eeee0eb5e416d4dfe9de022f
6
+ metadata.gz: b70cfaecfca2e89dda7c95eb471d0169afc9deb286fb42481f36663db89c07850ef8c7d5185b7cb47658313e812d01328f95d8f68a88a8e4db6b0b37007f5a2f
7
+ data.tar.gz: 14ca08c194b0c3c710670f7b9e77f6584a269366167a3ec4bfadaf042c7fa0e60776981af46b2dff7af69ed0a96fafd116585fbfa1a2721624225d9aeec399c1
@@ -41,11 +41,8 @@ jobs:
41
41
  strategy:
42
42
  fail-fast: false
43
43
  matrix:
44
- ruby: [2.7, 2.7.4, 3.0.0, 3.0.1, 3.0.2]
44
+ ruby: [2.6, 2.7, 2.7.4, 3.0.0, 3.0.1, 3.0.2]
45
45
  experimental: [false]
46
- include:
47
- - ruby: head
48
- experimental: true
49
46
 
50
47
  steps:
51
48
  - uses: actions/checkout@v2
data/.rubocop.yml CHANGED
@@ -3,7 +3,7 @@ inherit_gem:
3
3
 
4
4
  AllCops:
5
5
  DisplayCopNames: true
6
- TargetRubyVersion: 2.7
6
+ TargetRubyVersion: 2.6
7
7
 
8
8
  RSpec/EmptyLineAfterHook:
9
9
  Enabled: false
@@ -11,6 +11,9 @@ RSpec/EmptyLineAfterHook:
11
11
  Naming/RescuedExceptionsVariableName:
12
12
  Enabled: false
13
13
 
14
+ Style/CaseEquality:
15
+ Enabled: false
16
+
14
17
  Style/HashConversion:
15
18
  Exclude:
16
19
  - spec/**/*_spec.rb
data/Gemfile.lock CHANGED
@@ -1,30 +1,29 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- jcw (0.2.0)
5
- activesupport (>= 5.0)
4
+ jcw (0.2.4)
5
+ activesupport (>= 5.0, < 7.0.0)
6
6
  gruf (~> 2.10)
7
7
  httprb-opentracing (~> 0.4.0)
8
8
  jaeger-client (~> 1.1.0)
9
- rack-tracer (~> 0.9.0)
10
9
 
11
10
  GEM
12
11
  remote: https://rubygems.org/
13
12
  specs:
14
- actionpack (6.1.4.1)
15
- actionview (= 6.1.4.1)
16
- activesupport (= 6.1.4.1)
13
+ actionpack (6.1.4.4)
14
+ actionview (= 6.1.4.4)
15
+ activesupport (= 6.1.4.4)
17
16
  rack (~> 2.0, >= 2.0.9)
18
17
  rack-test (>= 0.6.3)
19
18
  rails-dom-testing (~> 2.0)
20
19
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
21
- actionview (6.1.4.1)
22
- activesupport (= 6.1.4.1)
20
+ actionview (6.1.4.4)
21
+ activesupport (= 6.1.4.4)
23
22
  builder (~> 3.1)
24
23
  erubi (~> 1.4)
25
24
  rails-dom-testing (~> 2.0)
26
25
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
27
- activesupport (6.1.4.1)
26
+ activesupport (6.1.4.4)
28
27
  concurrent-ruby (~> 1.0, >= 1.0.2)
29
28
  i18n (>= 1.6, < 2)
30
29
  minitest (>= 5.1)
@@ -34,7 +33,7 @@ GEM
34
33
  public_suffix (>= 2.0.2, < 5.0)
35
34
  ast (2.4.2)
36
35
  builder (3.2.4)
37
- bundler-audit (0.8.0)
36
+ bundler-audit (0.9.0.1)
38
37
  bundler (>= 1.2.0, < 3)
39
38
  thor (~> 1.0)
40
39
  coderay (1.1.3)
@@ -46,39 +45,31 @@ GEM
46
45
  unf (>= 0.0.5, < 1.0.0)
47
46
  e2mmap (0.1.0)
48
47
  erubi (1.10.0)
49
- ffi (1.15.3)
48
+ ffi (1.15.4)
50
49
  ffi-compiler (1.0.1)
51
50
  ffi (>= 1.0.0)
52
51
  rake
53
- google-protobuf (3.18.1)
54
- google-protobuf (3.18.1-universal-darwin)
55
- google-protobuf (3.18.1-x86_64-linux)
56
- googleapis-common-protos-types (1.2.0)
52
+ google-protobuf (3.19.3)
53
+ googleapis-common-protos-types (1.3.0)
57
54
  google-protobuf (~> 3.14)
58
55
  grpc (1.41.0)
59
56
  google-protobuf (~> 3.17)
60
57
  googleapis-common-protos-types (~> 1.0)
61
- grpc (1.41.0-universal-darwin)
62
- google-protobuf (~> 3.17)
63
- googleapis-common-protos-types (~> 1.0)
64
- grpc (1.41.0-x86_64-linux)
65
- google-protobuf (~> 3.17)
66
- googleapis-common-protos-types (~> 1.0)
67
58
  grpc-tools (1.41.0)
68
- gruf (2.10.0)
59
+ gruf (2.12.0)
69
60
  activesupport (> 4)
70
61
  concurrent-ruby (> 1)
71
- e2mmap (~> 0.1)
72
- grpc (~> 1.10)
73
- grpc-tools (~> 1.10)
62
+ e2mmap (>= 0.1)
63
+ grpc (~> 1.10, <= 1.41.0)
64
+ grpc-tools (~> 1.10, <= 1.41.0)
74
65
  json (>= 2.3)
75
- slop (~> 4.6)
76
- thwait (~> 0.1)
77
- http (5.0.1)
78
- addressable (~> 2.3)
66
+ slop (>= 4.6)
67
+ thwait (>= 0.1)
68
+ http (5.0.4)
69
+ addressable (~> 2.8)
79
70
  http-cookie (~> 1.0)
80
71
  http-form_data (~> 2.2)
81
- llhttp-ffi (~> 0.3.0)
72
+ llhttp-ffi (~> 0.4.0)
82
73
  http-cookie (1.0.4)
83
74
  domain_name (~> 0.5)
84
75
  http-form_data (2.3.0)
@@ -86,21 +77,21 @@ GEM
86
77
  ffi-compiler (>= 1.0, < 2.0)
87
78
  httprb-opentracing (0.4.0)
88
79
  opentracing (~> 0.5.0)
89
- i18n (1.8.10)
80
+ i18n (1.8.11)
90
81
  concurrent-ruby (~> 1.0)
91
82
  jaeger-client (1.1.0)
92
83
  opentracing (~> 0.3)
93
84
  thrift
94
- json (2.5.1)
95
- llhttp-ffi (0.3.1)
85
+ json (2.6.1)
86
+ llhttp-ffi (0.4.0)
96
87
  ffi-compiler (~> 1.0)
97
88
  rake (~> 13.0)
98
- loofah (2.12.0)
89
+ loofah (2.13.0)
99
90
  crass (~> 1.0.2)
100
91
  nokogiri (>= 1.5.9)
101
92
  method_source (1.0.0)
102
93
  mini_portile2 (2.6.1)
103
- minitest (5.14.4)
94
+ minitest (5.15.0)
104
95
  nokogiri (1.12.5)
105
96
  mini_portile2 (~> 2.6.1)
106
97
  racc (~> 1.4)
@@ -109,33 +100,33 @@ GEM
109
100
  nokogiri (1.12.5-x86_64-linux)
110
101
  racc (~> 1.4)
111
102
  opentracing (0.5.0)
112
- parallel (1.20.1)
113
- parser (3.0.2.0)
103
+ opentracing_test_tracer (0.1.1)
104
+ opentracing
105
+ parallel (1.21.0)
106
+ parser (3.0.3.2)
114
107
  ast (~> 2.4.1)
115
108
  pry (0.14.1)
116
109
  coderay (~> 1.1)
117
110
  method_source (~> 1.0)
118
111
  public_suffix (4.0.6)
119
- racc (1.5.2)
112
+ racc (1.6.0)
120
113
  rack (2.2.3)
121
114
  rack-test (1.1.0)
122
115
  rack (>= 1.0, < 3)
123
- rack-tracer (0.9.0)
124
- opentracing (~> 0.4)
125
116
  rails-dom-testing (2.0.3)
126
117
  activesupport (>= 4.2.0)
127
118
  nokogiri (>= 1.6)
128
119
  rails-html-sanitizer (1.4.2)
129
120
  loofah (~> 2.3)
130
- railties (6.1.4.1)
131
- actionpack (= 6.1.4.1)
132
- activesupport (= 6.1.4.1)
121
+ railties (6.1.4.4)
122
+ actionpack (= 6.1.4.4)
123
+ activesupport (= 6.1.4.4)
133
124
  method_source
134
125
  rake (>= 0.13)
135
126
  thor (~> 1.0)
136
127
  rainbow (3.0.0)
137
128
  rake (13.0.6)
138
- regexp_parser (2.1.1)
129
+ regexp_parser (2.2.0)
139
130
  rexml (3.2.5)
140
131
  rspec (3.10.0)
141
132
  rspec-core (~> 3.10.0)
@@ -149,7 +140,7 @@ GEM
149
140
  rspec-mocks (3.10.2)
150
141
  diff-lcs (>= 1.2.0, < 2.0)
151
142
  rspec-support (~> 3.10.0)
152
- rspec-support (3.10.2)
143
+ rspec-support (3.10.3)
153
144
  rubocop (1.17.0)
154
145
  parallel (~> 1.10)
155
146
  parser (>= 3.0.0.0)
@@ -159,7 +150,7 @@ GEM
159
150
  rubocop-ast (>= 1.7.0, < 2.0)
160
151
  ruby-progressbar (~> 1.7)
161
152
  unicode-display_width (>= 1.4.0, < 3.0)
162
- rubocop-ast (1.11.0)
153
+ rubocop-ast (1.15.0)
163
154
  parser (>= 3.0.1.1)
164
155
  rubocop-config-umbrellio (1.17.0.53)
165
156
  rubocop (= 1.17.0)
@@ -199,9 +190,9 @@ GEM
199
190
  concurrent-ruby (~> 1.0)
200
191
  unf (0.1.4)
201
192
  unf_ext
202
- unf_ext (0.0.7.7)
203
- unicode-display_width (2.0.0)
204
- zeitwerk (2.4.2)
193
+ unf_ext (0.0.8)
194
+ unicode-display_width (2.1.0)
195
+ zeitwerk (2.5.1)
205
196
 
206
197
  PLATFORMS
207
198
  ruby
@@ -214,6 +205,7 @@ DEPENDENCIES
214
205
  http
215
206
  http-parser
216
207
  jcw!
208
+ opentracing_test_tracer
217
209
  pry
218
210
  railties
219
211
  rake
@@ -223,4 +215,4 @@ DEPENDENCIES
223
215
  simplecov-lcov
224
216
 
225
217
  BUNDLED WITH
226
- 2.2.15
218
+ 2.2.27
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # JCW &middot; [![Supporting](https://github.com/Cado-Labs/cado-labs-logos/blob/main/cado_labs_badge.png)](https://github.com/Cado-Labs/) &middot; [![Coverage Status](https://coveralls.io/repos/github/Cado-Labs/jcw/badge.svg?branch=gem-without-zeitwerk)](https://coveralls.io/github/Cado-Labs/jcw?branch=gem-without-zeitwerk) &middot; [![Gem Version](https://badge.fury.io/rb/jcw.svg)](https://badge.fury.io/rb/jcw)
1
+ # JCW &middot; <a target="_blank" href="https://github.com/Cado-Labs"><img src="https://github.com/Cado-Labs/cado-labs-logos/raw/main/cado_labs_badge.svg" alt="Supported by Cado Labs" style="max-width: 100%; height: 20px"></a> &middot; [![Coverage Status](https://coveralls.io/repos/github/Cado-Labs/jcw/badge.svg?branch=gem-without-zeitwerk)](https://coveralls.io/github/Cado-Labs/jcw?branch=gem-without-zeitwerk) &middot; [![Gem Version](https://badge.fury.io/rb/jcw.svg)](https://badge.fury.io/rb/jcw)
2
2
 
3
3
  Simple wrapper for the gem "jaeger-client" with simpler customization.
4
4
 
@@ -6,7 +6,7 @@ Simple wrapper for the gem "jaeger-client" with simpler customization.
6
6
 
7
7
  <p>
8
8
  <a href="https://github.com/Cado-Labs">
9
- <img src="https://github.com/Cado-Labs/cado-labs-logos/blob/main/cado_labs_supporting.svg" alt="Supported by Cado Labs" />
9
+ <img src="https://github.com/Cado-Labs/cado-labs-resources/blob/main/cado_labs_supporting_rounded.svg" alt="Supported by Cado Labs" />
10
10
  </a>
11
11
  </p>
12
12
 
@@ -42,10 +42,11 @@ UDP Sender(default):
42
42
  hostname: "custom-hostname",
43
43
  custom_tag: "custom-tag-value",
44
44
  }
45
+ config.rack_ignore_path_patterns = ["/api/test", %r{/sidekiq}]
45
46
  end
46
47
 
47
- # Set middleware for wrapping all requests(gem RackTracer)
48
- Rails.application.middleware.use(JCW::RackTracer)
48
+ # Set middleware for wrapping all requests
49
+ Rails.application.middleware.use(JCW::Rack::Tracer)
49
50
  ```
50
51
 
51
52
  TCP Sender:
@@ -59,16 +60,17 @@ TCP Sender:
59
60
  hostname: "custom-hostname",
60
61
  custom_tag: "custom-tag-value",
61
62
  }
63
+ config.rack_ignore_path_patterns = ["/api/test", %r{/sidekiq}]
62
64
  end
63
65
 
64
66
  # Set middleware for wrapping all requests
65
- Rails.application.middleware.use(JCW::RackTracer)
67
+ Rails.application.middleware.use(JCW::Rack::Tracer)
66
68
 
67
69
  # If you need send all logs with spans set on_finish_span and extend JaegerLoggerExtension
68
70
  # Not recommended for UDP sender, because default max packet size is 65,000 bytes.
69
71
  Rails.application.config.tap do |config|
70
72
  config.middleware.use(
71
- JCW::RackTracer,
73
+ JCW::Rack::Tracer,
72
74
  on_finish_span: lambda do |span|
73
75
  JCW::Logger.current.logs.each { |log| span.log_kv(**log) }
74
76
  JCW::Logger.current.clear # Do not forget to avoid memory leaks
@@ -132,7 +134,7 @@ Released under MIT License.
132
134
  ## Supporting
133
135
 
134
136
  <a href="https://github.com/Cado-Labs">
135
- <img src="https://github.com/Cado-Labs/cado-labs-logos/raw/main/cado_labs_logo.png" alt="Supported by Cado Labs">
137
+ <img src="https://github.com/Cado-Labs/cado-labs-resources/blob/main/cado_labs_supporting_rounded.svg" alt="Supported by Cado Labs" />
136
138
  </a>
137
139
 
138
140
  ## Authors
data/jcw.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = "Wrapper for the gem 'jaeger-client' with simpler customization."
13
13
  spec.homepage = "https://github.com/Cado-Labs/jcw"
14
14
  spec.license = "MIT"
15
- spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
15
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
16
16
 
17
17
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
18
18
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
@@ -22,16 +22,16 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.add_dependency "activesupport", ">= 5.0"
25
+ spec.add_dependency "activesupport", ">= 5.0", "< 7.0.0"
26
26
  spec.add_dependency "gruf", "~> 2.10"
27
27
  spec.add_dependency "httprb-opentracing", "~> 0.4.0"
28
28
  spec.add_dependency "jaeger-client", "~> 1.1.0"
29
- spec.add_dependency "rack-tracer", "~> 0.9.0"
30
29
 
31
30
  spec.add_development_dependency "bundler"
32
31
  spec.add_development_dependency "bundler-audit"
33
32
  spec.add_development_dependency "http"
34
33
  spec.add_development_dependency "http-parser"
34
+ spec.add_development_dependency "opentracing_test_tracer"
35
35
  spec.add_development_dependency "pry"
36
36
  spec.add_development_dependency "railties"
37
37
  spec.add_development_dependency "rake"
@@ -39,4 +39,7 @@ Gem::Specification.new do |spec|
39
39
  spec.add_development_dependency "rubocop-config-umbrellio"
40
40
  spec.add_development_dependency "simplecov"
41
41
  spec.add_development_dependency "simplecov-lcov"
42
+ spec.metadata = {
43
+ "rubygems_mfa_required" => "true",
44
+ }
42
45
  end
data/lib/jcw/config.rb CHANGED
@@ -8,7 +8,8 @@ module JCW
8
8
  :connection,
9
9
  :flush_interval,
10
10
  :tags,
11
- :grpc_ignore_methods
11
+ :grpc_ignore_methods,
12
+ :rack_ignore_path_patterns
12
13
 
13
14
  def enabled
14
15
  @enabled ||= false
@@ -39,5 +40,9 @@ module JCW
39
40
  def grpc_ignore_methods
40
41
  @grpc_ignore_methods ||= []
41
42
  end
43
+
44
+ def rack_ignore_path_patterns
45
+ @rack_ignore_path_patterns ||= []
46
+ end
42
47
  end
43
48
  end
@@ -17,6 +17,7 @@ module JCW
17
17
  host = request.uri.host if request.uri.respond_to?(:host)
18
18
  port = request.uri.port if request.uri.respond_to?(:port)
19
19
  verb = request.verb.to_s.upcase if request.respond_to?(:verb)
20
+ full_path = request.uri.to_s
20
21
 
21
22
  tags = {
22
23
  "component" => "ruby-httprb",
@@ -25,13 +26,15 @@ module JCW
25
26
  "http.url" => path,
26
27
  "peer.host" => host,
27
28
  "peer.port" => port,
29
+ "full_path" => full_path,
28
30
  }.compact
29
31
 
30
32
  tracer = ::HTTP::Tracer.tracer
31
33
 
32
- tracer.start_active_span("http.request", tags: tags) do |scope|
34
+ request_name = "http.request #{verb} #{path}"
35
+ tracer.start_active_span(request_name, tags: tags) do |scope|
33
36
  request.headers.merge!(options.headers)
34
- OpenTracing.inject(scope.span.context, OpenTracing::FORMAT_RACK,
37
+ OpenTracing.inject(scope.span.context, OpenTracing::FORMAT_TEXT_MAP,
35
38
  request.headers)
36
39
 
37
40
  res = perform_without_tracing(request, options)
@@ -1,5 +1,140 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # inspired https://github.com/opentracing-contrib/ruby-rack-tracer/blob/master/lib/rack/tracer.rb
3
4
  module JCW
4
- RackTracer = Class.new(Rack::Tracer)
5
+ module Rack
6
+ class Tracer
7
+ REQUEST_URI = "REQUEST_URI"
8
+ REQUEST_PATH = "REQUEST_PATH"
9
+ REQUEST_METHOD = "REQUEST_METHOD"
10
+
11
+ # Create a new Rack Tracer middleware.
12
+ #
13
+ # @param app The Rack application/middlewares stack.
14
+ # @param tracer [OpenTracing::Tracer] A tracer to be used when start_span, and extract
15
+ # is called.
16
+ # @param on_start_span [Proc, nil] A callback evaluated after a new span is created.
17
+ # @param on_finish_span [Proc, nil] A callback evaluated after a span is finished.
18
+ # @param ignore_path_patterns [Array<Class>] An array of paths to be skiped by the tracer.
19
+ # @param errors [Array<Class>] An array of error classes to be captured by the tracer
20
+ # as errors. Errors are **not** muted by the middleware, they're re-raised afterwards.
21
+ def initialize(app, # rubocop:disable Metrics/ParameterLists
22
+ tracer: OpenTracing.global_tracer,
23
+ on_start_span: nil,
24
+ on_finish_span: nil,
25
+ trust_incoming_span: true,
26
+ ignore_path_patterns: Wrapper.config.rack_ignore_path_patterns,
27
+ errors: [StandardError])
28
+ @app = app
29
+ @tracer = tracer
30
+ @on_start_span = on_start_span
31
+ @on_finish_span = on_finish_span
32
+ @trust_incoming_span = trust_incoming_span
33
+ @errors = errors
34
+ @ignore_path_patterns = ignore_path_patterns
35
+ end
36
+
37
+ def call(env)
38
+ method = env[REQUEST_METHOD]
39
+ path = env[REQUEST_PATH]
40
+ url = env[REQUEST_URI]
41
+
42
+ return @app.call(env) if @ignore_path_patterns.find { |pattern| pattern === path }
43
+
44
+ set_extract_env(env)
45
+ context = @tracer.extract(OpenTracing::FORMAT_TEXT_MAP, env) if @trust_incoming_span
46
+ scope = build_scope(method, url, context)
47
+ span = scope.span
48
+ perform_on_start_span(env, span, @on_start_span)
49
+ call_request(env, span)
50
+ rescue *@errors => error
51
+ build_error_log(span, error)
52
+ raise
53
+ ensure
54
+ begin
55
+ close_scope(scope)
56
+ ensure
57
+ perform_on_finish_span(span)
58
+ end
59
+ end
60
+
61
+ private
62
+
63
+ def set_extract_env(env)
64
+ env["uber-trace-id"] = env["HTTP_UBER_TRACE_ID"]
65
+ end
66
+
67
+ def build_scope(method, url, context)
68
+ @tracer.start_active_span(
69
+ method,
70
+ child_of: context,
71
+ tags: {
72
+ "component" => "rack",
73
+ "span.kind" => "server",
74
+ "http.method" => method,
75
+ "http.url" => url,
76
+ },
77
+ )
78
+ end
79
+
80
+ def perform_on_start_span(env, span, on_start_span)
81
+ on_start_span&.call(span)
82
+ env["rack.span"] = span
83
+ end
84
+
85
+ def call_request(env, span)
86
+ @app.call(env).tap do |status_code, _headers, _body|
87
+ set_tag(span, status_code, env)
88
+ end
89
+ end
90
+
91
+ def set_tag(span, status_code, env)
92
+ span.set_tag("http.status_code", status_code)
93
+ route = route_from_env(env)
94
+ span.operation_name = route
95
+ end
96
+
97
+ def route_from_env(env)
98
+ method = env[REQUEST_METHOD]
99
+ if (sinatra_route = env["sinatra.route"])
100
+ sinatra_route
101
+ elsif (rails_controller = env["action_controller.instance"])
102
+ "#{method} #{rails_controller.controller_name}/#{rails_controller.action_name}"
103
+ elsif (grape_route_args = env["grape.routing_args"] || env["rack.routing_args"])
104
+ "#{method} #{grape_route_from_args(grape_route_args)}"
105
+ else
106
+ "#{method} #{env[REQUEST_PATH] || env["SCRIPT_NAME"] || env["PATH_INFO"]}".strip
107
+ end
108
+ end
109
+
110
+ def grape_route_from_args(route_args)
111
+ route_info = route_args[:route_info]
112
+ if route_info.respond_to?(:path)
113
+ route_info.path
114
+ elsif (rack_route_options = route_info.instance_variable_get(:@options))
115
+ rack_route_options[:path]
116
+ end
117
+ end
118
+
119
+ def build_error_log(span, error)
120
+ span.set_tag("error", true)
121
+ span.log_kv(
122
+ event: "error",
123
+ "error.kind": error.class.to_s,
124
+ "error.object": error,
125
+ message: error.message,
126
+ stack: error.backtrace.join("\n"),
127
+ )
128
+ end
129
+
130
+ def perform_on_finish_span(span)
131
+ return unless @on_finish_span
132
+ @on_finish_span.call(span)
133
+ end
134
+
135
+ def close_scope(scope)
136
+ scope&.close
137
+ end
138
+ end
139
+ end
5
140
  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.2.0"
4
+ VERSION = "0.2.4"
5
5
  end
data/lib/jcw.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rack/tracer"
3
+ require "opentracing"
4
4
  require "jaeger/client"
5
5
  require "active_support"
6
6
  require "httprb-opentracing"
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.2.0
4
+ version: 0.2.4
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-10-25 00:00:00.000000000 Z
11
+ date: 2022-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '5.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 7.0.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '5.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 7.0.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: gruf
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -67,21 +73,21 @@ dependencies:
67
73
  - !ruby/object:Gem::Version
68
74
  version: 1.1.0
69
75
  - !ruby/object:Gem::Dependency
70
- name: rack-tracer
76
+ name: bundler
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
- - - "~>"
79
+ - - ">="
74
80
  - !ruby/object:Gem::Version
75
- version: 0.9.0
76
- type: :runtime
81
+ version: '0'
82
+ type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
- - - "~>"
86
+ - - ">="
81
87
  - !ruby/object:Gem::Version
82
- version: 0.9.0
88
+ version: '0'
83
89
  - !ruby/object:Gem::Dependency
84
- name: bundler
90
+ name: bundler-audit
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - ">="
@@ -95,7 +101,7 @@ dependencies:
95
101
  - !ruby/object:Gem::Version
96
102
  version: '0'
97
103
  - !ruby/object:Gem::Dependency
98
- name: bundler-audit
104
+ name: http
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
107
  - - ">="
@@ -109,7 +115,7 @@ dependencies:
109
115
  - !ruby/object:Gem::Version
110
116
  version: '0'
111
117
  - !ruby/object:Gem::Dependency
112
- name: http
118
+ name: http-parser
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
121
  - - ">="
@@ -123,7 +129,7 @@ dependencies:
123
129
  - !ruby/object:Gem::Version
124
130
  version: '0'
125
131
  - !ruby/object:Gem::Dependency
126
- name: http-parser
132
+ name: opentracing_test_tracer
127
133
  requirement: !ruby/object:Gem::Requirement
128
134
  requirements:
129
135
  - - ">="
@@ -270,7 +276,8 @@ files:
270
276
  homepage: https://github.com/Cado-Labs/jcw
271
277
  licenses:
272
278
  - MIT
273
- metadata: {}
279
+ metadata:
280
+ rubygems_mfa_required: 'true'
274
281
  post_install_message:
275
282
  rdoc_options: []
276
283
  require_paths:
@@ -279,7 +286,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
279
286
  requirements:
280
287
  - - ">="
281
288
  - !ruby/object:Gem::Version
282
- version: 2.7.0
289
+ version: 2.6.0
283
290
  required_rubygems_version: !ruby/object:Gem::Requirement
284
291
  requirements:
285
292
  - - ">="