logister-ruby 0.5.0 → 0.5.1
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/CHANGELOG.md +5 -0
- data/lib/logister/active_job_reporter.rb +16 -17
- data/lib/logister/context_store.rb +10 -0
- data/lib/logister/middleware.rb +5 -3
- data/lib/logister/version.rb +1 -1
- data/logister-ruby.gemspec +1 -0
- metadata +22 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 831c1daef24ddf24e6b74e58b22abf58280881bc1b6db683819198e5f6808c03
|
|
4
|
+
data.tar.gz: 1682771b953d6db5f323b33013c97618945bf3ff95b1c3117ae513c09e565d4c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5580094db13b735ec710752d10633d646f4975ebc48cc4720ea224af883e75c353f9afd724f4e7d41dddf32169498a4fea6f3c2bb1fb6bba0272cb72826ec094
|
|
7
|
+
data.tar.gz: bae736ef8c2fff8e37b87fe10b21d5ce9162917c5ae24d63aa58c52396f0f0f8b74101a782840d86aba98eb90d1a6b4ebe73c39bc76b61dc6aaaeb58c5771856
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.5.1 - 2026-09-26
|
|
4
|
+
|
|
5
|
+
- Restore the enclosing request or job scope after inline and nested Active Job executions, including failures, preserving request tracing, breadcrumbs, and dependencies while keeping job telemetry isolated.
|
|
6
|
+
- Capture request identity before invoking the Rack app so response headers stay stable if ambient context changes; clear request summaries using that captured identity during cleanup.
|
|
7
|
+
|
|
3
8
|
## v0.5.0 - 2026-09-24
|
|
4
9
|
|
|
5
10
|
- Propagate W3C request context through Rack and Rails, including logs, errors, transactions, and server spans.
|
|
@@ -15,24 +15,23 @@ module Logister
|
|
|
15
15
|
|
|
16
16
|
included do
|
|
17
17
|
around_perform do |job, block|
|
|
18
|
-
Logister::ContextStore.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
)
|
|
24
|
-
started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
25
|
-
|
|
26
|
-
begin
|
|
27
|
-
block.call
|
|
28
|
-
rescue StandardError => error
|
|
29
|
-
Logister.report_error(
|
|
30
|
-
error,
|
|
31
|
-
context: Logister::ActiveJobReporter.build_job_error_context(job, started_at: started_at)
|
|
18
|
+
Logister::ContextStore.with_request_scope do
|
|
19
|
+
Logister.add_breadcrumb(
|
|
20
|
+
category: "job",
|
|
21
|
+
message: "Starting #{job.class.name}",
|
|
22
|
+
data: { queue: job.queue_name, jobId: job.job_id }
|
|
32
23
|
)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
24
|
+
started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
25
|
+
|
|
26
|
+
begin
|
|
27
|
+
block.call
|
|
28
|
+
rescue StandardError => error
|
|
29
|
+
Logister.report_error(
|
|
30
|
+
error,
|
|
31
|
+
context: Logister::ActiveJobReporter.build_job_error_context(job, started_at: started_at)
|
|
32
|
+
)
|
|
33
|
+
raise
|
|
34
|
+
end
|
|
36
35
|
end
|
|
37
36
|
end
|
|
38
37
|
end
|
|
@@ -12,6 +12,16 @@ module Logister
|
|
|
12
12
|
}
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
# Jobs may run inline inside a request or another job. Keep the complete
|
|
16
|
+
# caller scope intact while collecting this execution's telemetry separately.
|
|
17
|
+
def with_request_scope
|
|
18
|
+
previous_scope = Thread.current[REQUEST_SCOPE_KEY]
|
|
19
|
+
reset_request_scope!
|
|
20
|
+
yield
|
|
21
|
+
ensure
|
|
22
|
+
Thread.current[REQUEST_SCOPE_KEY] = previous_scope
|
|
23
|
+
end
|
|
24
|
+
|
|
15
25
|
def add_breadcrumb(category:, message:, data: {}, level: "info", timestamp: Time.now.utc.iso8601)
|
|
16
26
|
scope = request_scope
|
|
17
27
|
breadcrumbs = scope[:breadcrumbs]
|
data/lib/logister/middleware.rb
CHANGED
|
@@ -12,13 +12,14 @@ module Logister
|
|
|
12
12
|
|
|
13
13
|
def call(env)
|
|
14
14
|
Logister::ContextStore.reset_request_scope!
|
|
15
|
-
|
|
15
|
+
trace_context = Logister::TraceContext.from_headers(
|
|
16
16
|
traceparent: env["HTTP_TRACEPARENT"], request_id: env["action_dispatch.request_id"] || env["HTTP_X_REQUEST_ID"]
|
|
17
17
|
)
|
|
18
|
-
|
|
18
|
+
Logister::ContextStore.trace_context = trace_context
|
|
19
|
+
env["logister.trace_context"] = trace_context
|
|
19
20
|
started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
20
21
|
status, headers, body = @app.call(env)
|
|
21
|
-
headers = headers.merge("x-request-id" =>
|
|
22
|
+
headers = headers.merge("x-request-id" => trace_context.request_id)
|
|
22
23
|
[status, headers, body]
|
|
23
24
|
rescue StandardError => e
|
|
24
25
|
request = ActionDispatch::Request.new(env)
|
|
@@ -30,6 +31,7 @@ module Logister
|
|
|
30
31
|
)
|
|
31
32
|
raise
|
|
32
33
|
ensure
|
|
34
|
+
Logister::ContextStore.clear_request_summary(trace_context&.request_id)
|
|
33
35
|
request_id = env["action_dispatch.request_id"]
|
|
34
36
|
Logister::ContextStore.clear_request_summary(request_id)
|
|
35
37
|
Logister::ContextStore.reset_request_scope!
|
data/lib/logister/version.rb
CHANGED
data/logister-ruby.gemspec
CHANGED
|
@@ -28,5 +28,6 @@ Gem::Specification.new do |spec|
|
|
|
28
28
|
# ActiveSupport 8 passes JSON.parse options positionally; JSON 3 removed that API.
|
|
29
29
|
spec.add_dependency 'json', '>= 2', '< 3'
|
|
30
30
|
spec.add_development_dependency 'actionpack', '>= 8.0.5', '< 9'
|
|
31
|
+
spec.add_development_dependency 'activejob', '>= 8.0.5', '< 9'
|
|
31
32
|
spec.add_development_dependency 'rake', '>= 13.0'
|
|
32
33
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: logister-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Logister
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-09-
|
|
10
|
+
date: 2026-09-26 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: activesupport
|
|
@@ -69,6 +69,26 @@ dependencies:
|
|
|
69
69
|
- - "<"
|
|
70
70
|
- !ruby/object:Gem::Version
|
|
71
71
|
version: '9'
|
|
72
|
+
- !ruby/object:Gem::Dependency
|
|
73
|
+
name: activejob
|
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
|
75
|
+
requirements:
|
|
76
|
+
- - ">="
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: 8.0.5
|
|
79
|
+
- - "<"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '9'
|
|
82
|
+
type: :development
|
|
83
|
+
prerelease: false
|
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: 8.0.5
|
|
89
|
+
- - "<"
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
version: '9'
|
|
72
92
|
- !ruby/object:Gem::Dependency
|
|
73
93
|
name: rake
|
|
74
94
|
requirement: !ruby/object:Gem::Requirement
|