traceable 1.1.1 → 1.2.0
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/lib/traceable/tracer.rb +26 -16
- data/lib/traceable/version.rb +1 -1
- data/spec/traceable_spec.rb +14 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d9013920b6dba8371010fa2adc9907f2534f899
|
4
|
+
data.tar.gz: 0d7c6191c0a9a3e65487730386638d05ce6fcaee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d65e2b1746c66f4ecf41781b6fd1b0ccc4cd65345193691e83ca94c88daf3070e31b1a5a3d8e05858e849fd750118e2c5a1e510c21903b0f652a1c02ff2dbb6
|
7
|
+
data.tar.gz: 7514b665636b9cfedc34d3091168a154218289b17ac86cd63e15cbc025c5bb015e7e3e18fbeb5d24dc99e559ba230b81699f1df6b3cae8fc68fd5734b0c29533
|
data/lib/traceable/tracer.rb
CHANGED
@@ -5,30 +5,24 @@ module Traceable
|
|
5
5
|
# generate log entries. Each log entry consists of a key/value
|
6
6
|
# map ("tags"). Tags will be inherited from a parent instance,
|
7
7
|
# if provided.
|
8
|
+
|
9
|
+
# rubocop:disable Metrics/ClassLength
|
8
10
|
class Tracer
|
9
|
-
|
10
|
-
attr_reader :id
|
11
|
+
attr_accessor :logger
|
11
12
|
attr_reader :parent
|
12
13
|
attr_reader :tags
|
13
14
|
|
14
|
-
def initialize(parent_tracer, tags: nil)
|
15
|
-
@
|
16
|
-
|
17
|
-
@parent = case parent_tracer
|
18
|
-
when nil
|
19
|
-
nil
|
20
|
-
when Tracer
|
21
|
-
parent_tracer
|
22
|
-
when Traceable
|
23
|
-
parent_tracer.local_tracer
|
24
|
-
else
|
25
|
-
raise(ArgumentError, "#{parent_tracer} (#{parent_tracer.class})")
|
26
|
-
end
|
27
|
-
|
15
|
+
def initialize(parent_tracer, tags: nil, logger: nil)
|
16
|
+
@parent = which_parent(parent_tracer)
|
17
|
+
@logger = logger || (@parent ? @parent.logger : Tracer.default_logger)
|
28
18
|
@tags = @parent ? @parent.tags.dup : Tracer.default_tags
|
29
19
|
@tags.merge!(tags) if tags
|
30
20
|
end
|
31
21
|
|
22
|
+
def self.default_logger
|
23
|
+
Traceable.config.logger
|
24
|
+
end
|
25
|
+
|
32
26
|
def self.default_tags
|
33
27
|
tags = Traceable.config.default_tags.merge(
|
34
28
|
trace: SecureRandom.uuid
|
@@ -126,6 +120,21 @@ module Traceable
|
|
126
120
|
Thread.current[:tracer_stack] ||= []
|
127
121
|
end
|
128
122
|
|
123
|
+
private
|
124
|
+
|
125
|
+
def which_parent(parent_tracer)
|
126
|
+
case parent_tracer
|
127
|
+
when nil
|
128
|
+
nil
|
129
|
+
when Tracer
|
130
|
+
parent_tracer
|
131
|
+
when Traceable
|
132
|
+
parent_tracer.local_tracer
|
133
|
+
else
|
134
|
+
raise(ArgumentError, "#{parent_tracer} (#{parent_tracer.class})")
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
129
138
|
def push
|
130
139
|
Tracer.tracer_stack.push self
|
131
140
|
end
|
@@ -134,4 +143,5 @@ module Traceable
|
|
134
143
|
Tracer.tracer_stack.pop
|
135
144
|
end
|
136
145
|
end
|
146
|
+
# rubocop:enable Metrics/ClassLength
|
137
147
|
end
|
data/lib/traceable/version.rb
CHANGED
data/spec/traceable_spec.rb
CHANGED
@@ -18,7 +18,7 @@ RSpec.describe Traceable do
|
|
18
18
|
let(:logs) { fake_logger.logs }
|
19
19
|
|
20
20
|
before do
|
21
|
-
allow_any_instance_of(Traceable::
|
21
|
+
allow_any_instance_of(Traceable::Config).to receive(:logger) { fake_logger }
|
22
22
|
end
|
23
23
|
|
24
24
|
let(:subject_class) do
|
@@ -322,6 +322,19 @@ RSpec.describe Traceable do
|
|
322
322
|
t.info(message: 'just a test')
|
323
323
|
end
|
324
324
|
end
|
325
|
+
|
326
|
+
context 'with a custom logger' do
|
327
|
+
let(:logger2) { FakeLogger.new }
|
328
|
+
let(:logger3) { FakeLogger.new }
|
329
|
+
|
330
|
+
it 'sends logs to it' do
|
331
|
+
t = Traceable::Tracer.new(nil, logger: logger2)
|
332
|
+
expect { t.info(message: 'hello') }.to change { logger2.logs.size }.by 1
|
333
|
+
|
334
|
+
t.logger = logger3
|
335
|
+
expect { t.info(message: 'hi again') }.to change { logger3.logs.size }.by 1
|
336
|
+
end
|
337
|
+
end
|
325
338
|
end
|
326
339
|
end
|
327
340
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: traceable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Slade
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|