jcw 0.2.0 → 0.2.4

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