jcw 0.2.2 → 0.2.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: 110c81162cbfa9b0c7320539340e3adc8f2ecb0dc76f3ebc398ab3ef9330db31
4
- data.tar.gz: 637bfb300fc81f4e07dce12983da6e4a342dbaa2445695241c7f3bd6fdd76f69
3
+ metadata.gz: 2b1e12954a296bbc3e7413110a7b151fe38c0d422e156cebbd5ae7157bbe111b
4
+ data.tar.gz: '00488dffa129ca3c4a2b45fb3f8f947f1dec9b4310b8a900813426afa397fc92'
5
5
  SHA512:
6
- metadata.gz: 1cd01757ae92d40d4e0bd2ba687fc62d612a3ce7a6b3178d1a4038c56e7c2877ff219a8415fe0f4c099b0930b341eaff81efe2345ce6361384c46dfaa16829ab
7
- data.tar.gz: 696a1156f40a49295c53f638b2626e6269c445f30f73ad809bc725dc765673417de5c9869c39fe3cbbc58146a951ef14f4d11e7a00b6a36193358e3b73ec1c3c
6
+ metadata.gz: 61b7221435873848d3bb19e0e9ca30157c127601633fb4ca129fbc150fe5da98f2013bdc334139c455801fcb7fe90db8fb47809a4b1bba86f4e58d8ab1034162
7
+ data.tar.gz: 1140c437317341c6836f196711496f9dedb0e0959571d7f882c9750f6c690ca3026dd807916fd958c7a7628587cea5e985da1b55631f9b4fcbc15691a8cf7e49
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- jcw (0.2.2)
4
+ jcw (0.2.3)
5
5
  activesupport (>= 5.0, < 7.0.0)
6
6
  gruf (~> 2.10)
7
7
  httprb-opentracing (~> 0.4.0)
@@ -49,22 +49,22 @@ GEM
49
49
  ffi-compiler (1.0.1)
50
50
  ffi (>= 1.0.0)
51
51
  rake
52
- google-protobuf (3.19.1)
52
+ google-protobuf (3.19.2)
53
53
  googleapis-common-protos-types (1.3.0)
54
54
  google-protobuf (~> 3.14)
55
- grpc (1.42.0)
56
- google-protobuf (~> 3.18)
55
+ grpc (1.41.0)
56
+ google-protobuf (~> 3.17)
57
57
  googleapis-common-protos-types (~> 1.0)
58
- grpc-tools (1.42.0)
59
- gruf (2.10.0)
58
+ grpc-tools (1.41.0)
59
+ gruf (2.12.0)
60
60
  activesupport (> 4)
61
61
  concurrent-ruby (> 1)
62
- e2mmap (~> 0.1)
63
- grpc (~> 1.10)
64
- grpc-tools (~> 1.10)
62
+ e2mmap (>= 0.1)
63
+ grpc (~> 1.10, <= 1.41.0)
64
+ grpc-tools (~> 1.10, <= 1.41.0)
65
65
  json (>= 2.3)
66
- slop (~> 4.6)
67
- thwait (~> 0.1)
66
+ slop (>= 4.6)
67
+ thwait (>= 0.1)
68
68
  http (5.0.4)
69
69
  addressable (~> 2.8)
70
70
  http-cookie (~> 1.0)
@@ -38,45 +38,31 @@ module JCW
38
38
  method = env[REQUEST_METHOD]
39
39
  path = env[REQUEST_PATH]
40
40
  url = env[REQUEST_URI]
41
-
42
41
  return @app.call(env) if @ignore_paths.include?(path)
43
42
 
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
- )
43
+ set_extract_env(env)
44
+ context = @tracer.extract(OpenTracing::FORMAT_TEXT_MAP, env) if @trust_incoming_span
45
+ scope = build_scope(method, url, context)
46
+ span = scope.span
47
+ perform_on_start_span(env, span, @on_start_span)
48
+ call_request(env, span)
49
+ rescue *@errors => error
50
+ build_error_log(span, error)
71
51
  raise
72
52
  ensure
73
53
  begin
74
- @scope.close
54
+ close_scope(scope)
75
55
  ensure
76
- perform_on_finish_span
56
+ perform_on_finish_span(span)
77
57
  end
78
58
  end
79
59
 
60
+ private
61
+
62
+ def set_extract_env(env)
63
+ env["uber-trace-id"] = env["HTTP_UBER_TRACE_ID"]
64
+ end
65
+
80
66
  def build_scope(method, url, context)
81
67
  @tracer.start_active_span(
82
68
  method,
@@ -95,10 +81,16 @@ module JCW
95
81
  env["rack.span"] = span
96
82
  end
97
83
 
84
+ def call_request(env, span)
85
+ @app.call(env).tap do |status_code, _headers, _body|
86
+ set_tag(span, status_code, env)
87
+ end
88
+ end
89
+
98
90
  def set_tag(span, status_code, env)
99
91
  span.set_tag("http.status_code", status_code)
100
92
  route = route_from_env(env)
101
- span.operation_name = route if route
93
+ span.operation_name = route
102
94
  end
103
95
 
104
96
  def route_from_env(env)
@@ -109,6 +101,8 @@ module JCW
109
101
  "#{method} #{rails_controller.controller_name}/#{rails_controller.action_name}"
110
102
  elsif (grape_route_args = env["grape.routing_args"] || env["rack.routing_args"])
111
103
  "#{method} #{grape_route_from_args(grape_route_args)}"
104
+ else
105
+ "#{method} #{env[REQUEST_PATH] || env["SCRIPT_NAME"] || env["PATH_INFO"]}".strip
112
106
  end
113
107
  end
114
108
 
@@ -121,9 +115,24 @@ module JCW
121
115
  end
122
116
  end
123
117
 
124
- def perform_on_finish_span
118
+ def build_error_log(span, error)
119
+ span.set_tag("error", true)
120
+ span.log_kv(
121
+ event: "error",
122
+ "error.kind": error.class.to_s,
123
+ "error.object": error,
124
+ message: error.message,
125
+ stack: error.backtrace.join("\n"),
126
+ )
127
+ end
128
+
129
+ def perform_on_finish_span(span)
125
130
  return unless @on_finish_span
126
- @on_finish_span.call(@span)
131
+ @on_finish_span.call(span)
132
+ end
133
+
134
+ def close_scope(scope)
135
+ scope&.close
127
136
  end
128
137
  end
129
138
  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.2"
4
+ VERSION = "0.2.3"
5
5
  end
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.2
4
+ version: 0.2.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-12-27 00:00:00.000000000 Z
11
+ date: 2022-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport