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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc242330593a2f4843ca98a6565faa9ab90af60f
4
- data.tar.gz: a1a83721a83fdeedfee1ca0fc79894e6f10ecca6
3
+ metadata.gz: 2d9013920b6dba8371010fa2adc9907f2534f899
4
+ data.tar.gz: 0d7c6191c0a9a3e65487730386638d05ce6fcaee
5
5
  SHA512:
6
- metadata.gz: 7033d3e946a773d26a3925bc42b85742916d6cf9d5513dab28891e6e789c212eae87b06bc3225db4f4d7889c8e69f4a126b4e9ac4b11ce30ed710daed0699484
7
- data.tar.gz: caf12dda736fad2e7b5a112a4c70d49bf1d0615812ad617925fca158e0af8b100f2ea12e1537a5b9f6c80d7b38d47418374dba0929411364a29c952e5556ee4f
6
+ metadata.gz: 7d65e2b1746c66f4ecf41781b6fd1b0ccc4cd65345193691e83ca94c88daf3070e31b1a5a3d8e05858e849fd750118e2c5a1e510c21903b0f652a1c02ff2dbb6
7
+ data.tar.gz: 7514b665636b9cfedc34d3091168a154218289b17ac86cd63e15cbc025c5bb015e7e3e18fbeb5d24dc99e559ba230b81699f1df6b3cae8fc68fd5734b0c29533
@@ -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
- attr_reader :logger
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
- @logger = Traceable.config.logger
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Traceable
4
- VERSION = '1.1.1'
4
+ VERSION = '1.2.0'
5
5
  end
@@ -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::Tracer).to receive(:logger) { fake_logger }
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.1.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-02-24 00:00:00.000000000 Z
11
+ date: 2018-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler