jcw 0.2.1 → 0.2.2
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 +4 -4
- data/Gemfile.lock +35 -35
- data/README.md +6 -4
- data/jcw.gemspec +5 -2
- data/lib/jcw/config.rb +6 -1
- data/lib/jcw/http_tracer.rb +5 -2
- data/lib/jcw/rack_tracer.rb +126 -1
- data/lib/jcw/version.rb +1 -1
- data/lib/jcw.rb +1 -1
- metadata +20 -13
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 110c81162cbfa9b0c7320539340e3adc8f2ecb0dc76f3ebc398ab3ef9330db31
|
|
4
|
+
data.tar.gz: 637bfb300fc81f4e07dce12983da6e4a342dbaa2445695241c7f3bd6fdd76f69
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1cd01757ae92d40d4e0bd2ba687fc62d612a3ce7a6b3178d1a4038c56e7c2877ff219a8415fe0f4c099b0930b341eaff81efe2345ce6361384c46dfaa16829ab
|
|
7
|
+
data.tar.gz: 696a1156f40a49295c53f638b2626e6269c445f30f73ad809bc725dc765673417de5c9869c39fe3cbbc58146a951ef14f4d11e7a00b6a36193358e3b73ec1c3c
|
data/Gemfile.lock
CHANGED
|
@@ -1,30 +1,29 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
jcw (0.2.
|
|
5
|
-
activesupport (>= 5.0)
|
|
4
|
+
jcw (0.2.2)
|
|
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.
|
|
15
|
-
actionview (= 6.1.4.
|
|
16
|
-
activesupport (= 6.1.4.
|
|
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.
|
|
22
|
-
activesupport (= 6.1.4.
|
|
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.
|
|
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.
|
|
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,17 +45,17 @@ 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.
|
|
48
|
+
ffi (1.15.4)
|
|
50
49
|
ffi-compiler (1.0.1)
|
|
51
50
|
ffi (>= 1.0.0)
|
|
52
51
|
rake
|
|
53
52
|
google-protobuf (3.19.1)
|
|
54
53
|
googleapis-common-protos-types (1.3.0)
|
|
55
54
|
google-protobuf (~> 3.14)
|
|
56
|
-
grpc (1.
|
|
57
|
-
google-protobuf (~> 3.
|
|
55
|
+
grpc (1.42.0)
|
|
56
|
+
google-protobuf (~> 3.18)
|
|
58
57
|
googleapis-common-protos-types (~> 1.0)
|
|
59
|
-
grpc-tools (1.
|
|
58
|
+
grpc-tools (1.42.0)
|
|
60
59
|
gruf (2.10.0)
|
|
61
60
|
activesupport (> 4)
|
|
62
61
|
concurrent-ruby (> 1)
|
|
@@ -66,11 +65,11 @@ GEM
|
|
|
66
65
|
json (>= 2.3)
|
|
67
66
|
slop (~> 4.6)
|
|
68
67
|
thwait (~> 0.1)
|
|
69
|
-
http (5.0.
|
|
70
|
-
addressable (~> 2.
|
|
68
|
+
http (5.0.4)
|
|
69
|
+
addressable (~> 2.8)
|
|
71
70
|
http-cookie (~> 1.0)
|
|
72
71
|
http-form_data (~> 2.2)
|
|
73
|
-
llhttp-ffi (~> 0.
|
|
72
|
+
llhttp-ffi (~> 0.4.0)
|
|
74
73
|
http-cookie (1.0.4)
|
|
75
74
|
domain_name (~> 0.5)
|
|
76
75
|
http-form_data (2.3.0)
|
|
@@ -78,21 +77,21 @@ GEM
|
|
|
78
77
|
ffi-compiler (>= 1.0, < 2.0)
|
|
79
78
|
httprb-opentracing (0.4.0)
|
|
80
79
|
opentracing (~> 0.5.0)
|
|
81
|
-
i18n (1.8.
|
|
80
|
+
i18n (1.8.11)
|
|
82
81
|
concurrent-ruby (~> 1.0)
|
|
83
82
|
jaeger-client (1.1.0)
|
|
84
83
|
opentracing (~> 0.3)
|
|
85
84
|
thrift
|
|
86
85
|
json (2.6.1)
|
|
87
|
-
llhttp-ffi (0.
|
|
86
|
+
llhttp-ffi (0.4.0)
|
|
88
87
|
ffi-compiler (~> 1.0)
|
|
89
88
|
rake (~> 13.0)
|
|
90
|
-
loofah (2.
|
|
89
|
+
loofah (2.13.0)
|
|
91
90
|
crass (~> 1.0.2)
|
|
92
91
|
nokogiri (>= 1.5.9)
|
|
93
92
|
method_source (1.0.0)
|
|
94
93
|
mini_portile2 (2.6.1)
|
|
95
|
-
minitest (5.
|
|
94
|
+
minitest (5.15.0)
|
|
96
95
|
nokogiri (1.12.5)
|
|
97
96
|
mini_portile2 (~> 2.6.1)
|
|
98
97
|
racc (~> 1.4)
|
|
@@ -101,33 +100,33 @@ GEM
|
|
|
101
100
|
nokogiri (1.12.5-x86_64-linux)
|
|
102
101
|
racc (~> 1.4)
|
|
103
102
|
opentracing (0.5.0)
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
opentracing_test_tracer (0.1.1)
|
|
104
|
+
opentracing
|
|
105
|
+
parallel (1.21.0)
|
|
106
|
+
parser (3.0.3.2)
|
|
106
107
|
ast (~> 2.4.1)
|
|
107
108
|
pry (0.14.1)
|
|
108
109
|
coderay (~> 1.1)
|
|
109
110
|
method_source (~> 1.0)
|
|
110
111
|
public_suffix (4.0.6)
|
|
111
|
-
racc (1.
|
|
112
|
+
racc (1.6.0)
|
|
112
113
|
rack (2.2.3)
|
|
113
114
|
rack-test (1.1.0)
|
|
114
115
|
rack (>= 1.0, < 3)
|
|
115
|
-
rack-tracer (0.9.0)
|
|
116
|
-
opentracing (~> 0.4)
|
|
117
116
|
rails-dom-testing (2.0.3)
|
|
118
117
|
activesupport (>= 4.2.0)
|
|
119
118
|
nokogiri (>= 1.6)
|
|
120
119
|
rails-html-sanitizer (1.4.2)
|
|
121
120
|
loofah (~> 2.3)
|
|
122
|
-
railties (6.1.4.
|
|
123
|
-
actionpack (= 6.1.4.
|
|
124
|
-
activesupport (= 6.1.4.
|
|
121
|
+
railties (6.1.4.4)
|
|
122
|
+
actionpack (= 6.1.4.4)
|
|
123
|
+
activesupport (= 6.1.4.4)
|
|
125
124
|
method_source
|
|
126
125
|
rake (>= 0.13)
|
|
127
126
|
thor (~> 1.0)
|
|
128
127
|
rainbow (3.0.0)
|
|
129
128
|
rake (13.0.6)
|
|
130
|
-
regexp_parser (2.
|
|
129
|
+
regexp_parser (2.2.0)
|
|
131
130
|
rexml (3.2.5)
|
|
132
131
|
rspec (3.10.0)
|
|
133
132
|
rspec-core (~> 3.10.0)
|
|
@@ -141,7 +140,7 @@ GEM
|
|
|
141
140
|
rspec-mocks (3.10.2)
|
|
142
141
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
143
142
|
rspec-support (~> 3.10.0)
|
|
144
|
-
rspec-support (3.10.
|
|
143
|
+
rspec-support (3.10.3)
|
|
145
144
|
rubocop (1.17.0)
|
|
146
145
|
parallel (~> 1.10)
|
|
147
146
|
parser (>= 3.0.0.0)
|
|
@@ -151,7 +150,7 @@ GEM
|
|
|
151
150
|
rubocop-ast (>= 1.7.0, < 2.0)
|
|
152
151
|
ruby-progressbar (~> 1.7)
|
|
153
152
|
unicode-display_width (>= 1.4.0, < 3.0)
|
|
154
|
-
rubocop-ast (1.
|
|
153
|
+
rubocop-ast (1.15.0)
|
|
155
154
|
parser (>= 3.0.1.1)
|
|
156
155
|
rubocop-config-umbrellio (1.17.0.53)
|
|
157
156
|
rubocop (= 1.17.0)
|
|
@@ -191,9 +190,9 @@ GEM
|
|
|
191
190
|
concurrent-ruby (~> 1.0)
|
|
192
191
|
unf (0.1.4)
|
|
193
192
|
unf_ext
|
|
194
|
-
unf_ext (0.0.
|
|
195
|
-
unicode-display_width (2.
|
|
196
|
-
zeitwerk (2.
|
|
193
|
+
unf_ext (0.0.8)
|
|
194
|
+
unicode-display_width (2.1.0)
|
|
195
|
+
zeitwerk (2.5.1)
|
|
197
196
|
|
|
198
197
|
PLATFORMS
|
|
199
198
|
ruby
|
|
@@ -206,6 +205,7 @@ DEPENDENCIES
|
|
|
206
205
|
http
|
|
207
206
|
http-parser
|
|
208
207
|
jcw!
|
|
208
|
+
opentracing_test_tracer
|
|
209
209
|
pry
|
|
210
210
|
railties
|
|
211
211
|
rake
|
data/README.md
CHANGED
|
@@ -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_paths = %w[/api/test]
|
|
45
46
|
end
|
|
46
47
|
|
|
47
|
-
# Set middleware for wrapping all requests
|
|
48
|
-
Rails.application.middleware.use(JCW::
|
|
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_paths = %w[/api/test]
|
|
62
64
|
end
|
|
63
65
|
|
|
64
66
|
# Set middleware for wrapping all requests
|
|
65
|
-
Rails.application.middleware.use(JCW::
|
|
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::
|
|
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
|
data/jcw.gemspec
CHANGED
|
@@ -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_paths
|
|
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_paths
|
|
45
|
+
@rack_ignore_paths ||= []
|
|
46
|
+
end
|
|
42
47
|
end
|
|
43
48
|
end
|
data/lib/jcw/http_tracer.rb
CHANGED
|
@@ -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
|
-
|
|
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::
|
|
37
|
+
OpenTracing.inject(scope.span.context, OpenTracing::FORMAT_TEXT_MAP,
|
|
35
38
|
request.headers)
|
|
36
39
|
|
|
37
40
|
res = perform_without_tracing(request, options)
|
data/lib/jcw/rack_tracer.rb
CHANGED
|
@@ -1,5 +1,130 @@
|
|
|
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
|
-
|
|
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_paths [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_paths: Wrapper.config.rack_ignore_paths,
|
|
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_paths = ignore_paths
|
|
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_paths.include?(path)
|
|
43
|
+
|
|
44
|
+
handle_error(@errors) do
|
|
45
|
+
env["uber-trace-id"] = env["HTTP_UBER_TRACE_ID"]
|
|
46
|
+
context = @tracer.extract(OpenTracing::FORMAT_TEXT_MAP, env) if @trust_incoming_span
|
|
47
|
+
@scope = build_scope(method, url, context)
|
|
48
|
+
@span = @scope.span
|
|
49
|
+
|
|
50
|
+
perform_on_start_span(env, @span, @on_start_span)
|
|
51
|
+
|
|
52
|
+
@app.call(env).tap do |status_code, _headers, _body|
|
|
53
|
+
set_tag(@span, status_code, env)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
private
|
|
59
|
+
|
|
60
|
+
def handle_error(errors)
|
|
61
|
+
yield
|
|
62
|
+
rescue *errors => e
|
|
63
|
+
@span.set_tag("error", true)
|
|
64
|
+
@span.log_kv(
|
|
65
|
+
event: "error",
|
|
66
|
+
"error.kind": e.class.to_s,
|
|
67
|
+
"error.object": e,
|
|
68
|
+
message: e.message,
|
|
69
|
+
stack: e.backtrace.join("\n"),
|
|
70
|
+
)
|
|
71
|
+
raise
|
|
72
|
+
ensure
|
|
73
|
+
begin
|
|
74
|
+
@scope.close
|
|
75
|
+
ensure
|
|
76
|
+
perform_on_finish_span
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def build_scope(method, url, context)
|
|
81
|
+
@tracer.start_active_span(
|
|
82
|
+
method,
|
|
83
|
+
child_of: context,
|
|
84
|
+
tags: {
|
|
85
|
+
"component" => "rack",
|
|
86
|
+
"span.kind" => "server",
|
|
87
|
+
"http.method" => method,
|
|
88
|
+
"http.url" => url,
|
|
89
|
+
},
|
|
90
|
+
)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def perform_on_start_span(env, span, on_start_span)
|
|
94
|
+
on_start_span&.call(span)
|
|
95
|
+
env["rack.span"] = span
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def set_tag(span, status_code, env)
|
|
99
|
+
span.set_tag("http.status_code", status_code)
|
|
100
|
+
route = route_from_env(env)
|
|
101
|
+
span.operation_name = route if route
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def route_from_env(env)
|
|
105
|
+
method = env[REQUEST_METHOD]
|
|
106
|
+
if (sinatra_route = env["sinatra.route"])
|
|
107
|
+
sinatra_route
|
|
108
|
+
elsif (rails_controller = env["action_controller.instance"])
|
|
109
|
+
"#{method} #{rails_controller.controller_name}/#{rails_controller.action_name}"
|
|
110
|
+
elsif (grape_route_args = env["grape.routing_args"] || env["rack.routing_args"])
|
|
111
|
+
"#{method} #{grape_route_from_args(grape_route_args)}"
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def grape_route_from_args(route_args)
|
|
116
|
+
route_info = route_args[:route_info]
|
|
117
|
+
if route_info.respond_to?(:path)
|
|
118
|
+
route_info.path
|
|
119
|
+
elsif (rack_route_options = route_info.instance_variable_get(:@options))
|
|
120
|
+
rack_route_options[:path]
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def perform_on_finish_span
|
|
125
|
+
return unless @on_finish_span
|
|
126
|
+
@on_finish_span.call(@span)
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
5
130
|
end
|
data/lib/jcw/version.rb
CHANGED
data/lib/jcw.rb
CHANGED
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.
|
|
4
|
+
version: 0.2.2
|
|
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-
|
|
11
|
+
date: 2021-12-27 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:
|
|
76
|
+
name: bundler
|
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
|
72
78
|
requirements:
|
|
73
|
-
- - "
|
|
79
|
+
- - ">="
|
|
74
80
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0
|
|
76
|
-
type: :
|
|
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
|
|
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:
|
|
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:
|
|
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:
|