timber 2.6.0.pre.beta1 → 2.6.0.pre.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -1
- data/lib/timber/current_context.rb +7 -1
- data/lib/timber/events/error.rb +8 -2
- data/lib/timber/integrations/rack/error_event.rb +2 -5
- data/lib/timber/log_devices/http.rb +1 -0
- data/lib/timber/util/attribute_normalizer.rb +0 -1
- data/lib/timber/version.rb +1 -1
- data/spec/timber/current_context_spec.rb +12 -0
- data/spec/timber/integrations/rack/error_event_spec.rb +63 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52dde0fadd6632da69428d41199325ddebf0e6a4
|
4
|
+
data.tar.gz: 4f313fdc346a21c1a5ad34ceb384068bab70a6d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c851eb624acd150eb033bbcdc31685916112ba8d0e69816955d6b66b056cb0aadba55231519299ce409ca487c33e01f6fa0168a7c982734c95c1434830280a4c
|
7
|
+
data.tar.gz: 20143122643afb851984e7b44cf3f52a6cdf300b8a15e21df332c83f0e1dcd6bbd6881c2acb01dedf3e59dde85b604c2d03a6eb075a921aeccb7c269278baa0a
|
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [2.6.0-beta2] - 2017-11-16
|
11
|
+
|
12
|
+
### Fixed
|
13
|
+
|
14
|
+
- Fixes an issue where a reference to the current custom context map was being capture during log line creation and then later self-modifying to make the context invalid.
|
15
|
+
|
10
16
|
## [2.6.0-beta1] - 2017-10-28
|
11
17
|
|
12
18
|
### Fixed
|
@@ -14,6 +20,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
14
20
|
- Encoding and rewind issues for file upload parameters have been resolved. Timber
|
15
21
|
improved attribute normalization across all contexts and events, ignoring binary
|
16
22
|
values like this in general.
|
23
|
+
- Fixes `::ActionDispatch::ExceptionWrapper` version detection preventing the `undefined method clean for #<Hash:->` error when an exception is raised in a Rack request.
|
17
24
|
|
18
25
|
## [2.5.1] - 2017-10-27
|
19
26
|
|
@@ -111,7 +118,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
111
118
|
instead of applying back pressure.
|
112
119
|
|
113
120
|
|
114
|
-
[Unreleased]: https://github.com/timberio/timber-ruby/compare/v2.6.0-
|
121
|
+
[Unreleased]: https://github.com/timberio/timber-ruby/compare/v2.6.0-beta2...HEAD
|
122
|
+
[2.6.0-beta2]: https://github.com/timberio/timber-ruby/compare/v2.6.0-beta1...v2.6.0-beta2
|
115
123
|
[2.6.0-beta1]: https://github.com/timberio/timber-ruby/compare/v2.5.1...v2.6.0-beta1
|
116
124
|
[2.5.1]: https://github.com/timberio/timber-ruby/compare/v2.5.0...v2.5.1
|
117
125
|
[2.5.0]: https://github.com/timberio/timber-ruby/compare/v2.4.0...v2.5.0
|
@@ -120,7 +120,13 @@ module Timber
|
|
120
120
|
# since the context can change as execution proceeds. Note that individual contexts
|
121
121
|
# should be immutable, and we implement snapshot caching as a result of this assumption.
|
122
122
|
def snapshot
|
123
|
-
@snapshot ||=
|
123
|
+
@snapshot ||= begin
|
124
|
+
snapshot = hash.clone
|
125
|
+
if snapshot.key?(:custom)
|
126
|
+
snapshot[:custom] = hash[:custom].clone
|
127
|
+
end
|
128
|
+
snapshot
|
129
|
+
end
|
124
130
|
end
|
125
131
|
|
126
132
|
private
|
data/lib/timber/events/error.rb
CHANGED
@@ -16,7 +16,7 @@ module Timber
|
|
16
16
|
def initialize(attributes)
|
17
17
|
normalizer = Util::AttributeNormalizer.new(attributes)
|
18
18
|
@name = normalizer.fetch!(:name, :string)
|
19
|
-
@error_message = normalizer.fetch
|
19
|
+
@error_message = normalizer.fetch(:error_message, :string, :limit => MESSAGE_MAX_BYTES)
|
20
20
|
@backtrace = normalizer.fetch(:backtrace, :array)
|
21
21
|
end
|
22
22
|
|
@@ -35,7 +35,13 @@ module Timber
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def message
|
38
|
-
"#{name}
|
38
|
+
message = "#{name}"
|
39
|
+
|
40
|
+
if !error_message.nil?
|
41
|
+
message << " (#{error_message})"
|
42
|
+
end
|
43
|
+
|
44
|
+
message
|
39
45
|
end
|
40
46
|
end
|
41
47
|
end
|
@@ -18,11 +18,8 @@ module Timber
|
|
18
18
|
# {Timber::Events::Error}.
|
19
19
|
class ErrorEvent < Middleware
|
20
20
|
# We determine this when the app loads to avoid the overhead on a per request basis.
|
21
|
-
EXCEPTION_WRAPPER_TAKES_CLEANER =
|
22
|
-
|
23
|
-
else
|
24
|
-
false
|
25
|
-
end
|
21
|
+
EXCEPTION_WRAPPER_TAKES_CLEANER = defined?(::ActionDispatch::ExceptionWrapper) &&
|
22
|
+
!::ActionDispatch::ExceptionWrapper.instance_methods.include?(:env)
|
26
23
|
|
27
24
|
def call(env)
|
28
25
|
begin
|
data/lib/timber/version.rb
CHANGED
@@ -98,6 +98,18 @@ describe Timber::CurrentContext, :rails_23 => true do
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
101
|
+
describe ".snapshot" do
|
102
|
+
it "shoud properly snapshot custom contexts" do
|
103
|
+
snapshot = nil
|
104
|
+
|
105
|
+
described_class.with({build: {version: "1.0.0"}}) do
|
106
|
+
snapshot = described_class.instance.snapshot
|
107
|
+
end
|
108
|
+
|
109
|
+
expect(snapshot[:custom]).to eq({:build=>{:version=>"1.0.0"}})
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
101
113
|
describe ".with" do
|
102
114
|
it "should merge the context and cleanup on block exit" do
|
103
115
|
expect(described_class.instance.send(:hash)[:custom]).to be_nil
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
if defined?(::Rack)
|
4
|
+
describe Timber::Integrations::Rack::ErrorEvent do
|
5
|
+
let(:time) { Time.utc(2016, 9, 1, 12, 0, 0) }
|
6
|
+
let(:io) { StringIO.new }
|
7
|
+
let(:logger) do
|
8
|
+
logger = Timber::Logger.new(io)
|
9
|
+
logger.level = ::Logger::INFO
|
10
|
+
logger
|
11
|
+
end
|
12
|
+
|
13
|
+
around(:each) do |example|
|
14
|
+
class RackErrorController < ActionController::Base
|
15
|
+
layout nil
|
16
|
+
|
17
|
+
hook_name = respond_to?(:before_action) ? "before_action" : "before_filter"
|
18
|
+
send(hook_name) do
|
19
|
+
raise "Boom!"
|
20
|
+
end
|
21
|
+
|
22
|
+
def index
|
23
|
+
Thread.current[:_timber_context_snapshot] = Timber::CurrentContext.instance.snapshot
|
24
|
+
render json: {}
|
25
|
+
end
|
26
|
+
|
27
|
+
def method_for_action(action_name)
|
28
|
+
action_name
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
::RailsApp.routes.draw do
|
33
|
+
get '/rack_error' => 'rack_error#index'
|
34
|
+
end
|
35
|
+
|
36
|
+
with_rails_logger(logger) do
|
37
|
+
Timecop.freeze(time) { example.run }
|
38
|
+
end
|
39
|
+
|
40
|
+
Object.send(:remove_const, :RackErrorController)
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#process" do
|
44
|
+
it "should log the exception" do
|
45
|
+
allow(Benchmark).to receive(:ms).and_return(1).and_yield
|
46
|
+
|
47
|
+
expect { dispatch_rails_request("/rack_error") }.to raise_error(RuntimeError)
|
48
|
+
|
49
|
+
lines = clean_lines(io.string.split("\n"))
|
50
|
+
expect(lines.length).to eq(3)
|
51
|
+
|
52
|
+
expect(lines[0]).to start_with("Started GET \"/rack_error\" @metadata ")
|
53
|
+
expect(lines[1]).to start_with("Processing by RackErrorController#index as HTML @metadata ")
|
54
|
+
expect(lines[2]).to start_with("RuntimeError (Boom!) @metadata")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Remove blank lines since Rails does this to space out requests in the logs
|
59
|
+
def clean_lines(lines)
|
60
|
+
lines.select { |line| !line.start_with?(" @metadat") }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.0.pre.
|
4
|
+
version: 2.6.0.pre.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Timber Technologies, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -284,6 +284,7 @@ files:
|
|
284
284
|
- spec/timber/integrations/action_dispatch/debug_exceptions_spec.rb
|
285
285
|
- spec/timber/integrations/action_view/log_subscriber_spec.rb
|
286
286
|
- spec/timber/integrations/active_record/log_subscriber_spec.rb
|
287
|
+
- spec/timber/integrations/rack/error_event_spec.rb
|
287
288
|
- spec/timber/integrations/rack/http_context_spec.rb
|
288
289
|
- spec/timber/integrations/rack/http_events_spec.rb
|
289
290
|
- spec/timber/integrations/rack/session_context_spec.rb
|
@@ -354,6 +355,7 @@ test_files:
|
|
354
355
|
- spec/timber/integrations/action_dispatch/debug_exceptions_spec.rb
|
355
356
|
- spec/timber/integrations/action_view/log_subscriber_spec.rb
|
356
357
|
- spec/timber/integrations/active_record/log_subscriber_spec.rb
|
358
|
+
- spec/timber/integrations/rack/error_event_spec.rb
|
357
359
|
- spec/timber/integrations/rack/http_context_spec.rb
|
358
360
|
- spec/timber/integrations/rack/http_events_spec.rb
|
359
361
|
- spec/timber/integrations/rack/session_context_spec.rb
|