jcw 0.2.2 → 0.2.3

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