exception_handling 2.5.0.pre.1 → 2.5.0.pre.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -1
- data/Gemfile.lock +2 -2
- data/lib/exception_handling.rb +2 -2
- data/lib/exception_handling/version.rb +1 -1
- data/test/rake_test_warning_false.rb +20 -0
- data/test/unit/exception_handling_test.rb +117 -58
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1f2be68af4ed35506d1ecb517eb720a197a4d3c7d346eeb11c87d8a6e9abdf5
|
4
|
+
data.tar.gz: c87a3341b654ae7144f41888fc0e454953f52663a259f353405790c25d8596ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d2b5d03154666523f7fe03321ad1d1fa28ac0ae00629249c21f9f73a330b6f325acfe1ce8b039df4f318b6ade3dd28373b476f87f12d46917016403fbc8a8d6
|
7
|
+
data.tar.gz: 1482537c680996153dd63c7edb30b43259789a16ff3f86b8a61b5cd8aab402a9c07905dbc7d0a945ea0b93fd0fea2ea3ec09bbe51b389fe440d9d58991f08bb9
|
data/CHANGELOG.md
CHANGED
@@ -9,6 +9,10 @@ Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0
|
|
9
9
|
- The `**log_context` passed to `log_error`/`log_warning`/`log_info` is now
|
10
10
|
passed into `Honeybadger.notify()`, in `context: { log_context: ... }`.
|
11
11
|
|
12
|
+
## [2.4.4] - 2020-08-10
|
13
|
+
### Fixed
|
14
|
+
- `ExceptionHandling.logger = nil` no longer displays an "implicit extend" deprecation warning.
|
15
|
+
|
12
16
|
## [2.4.3] - 2020-05-14
|
13
17
|
### Deprecated
|
14
18
|
- In `ExceptionHandling.logger=`, implicit `logger.extend ContextualLogger::LoggerMixin` is now deprecated.
|
@@ -29,7 +33,8 @@ Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0
|
|
29
33
|
### Changed
|
30
34
|
- No longer depends on hobo_support. Uses invoca-utils 0.3 instead.
|
31
35
|
|
32
|
-
[2.5.0]: https://github.com/Invoca/exception_handling/compare/v2.4.
|
36
|
+
[2.5.0]: https://github.com/Invoca/exception_handling/compare/v2.4.4...v2.5.0
|
37
|
+
[2.4.4]: https://github.com/Invoca/exception_handling/compare/v2.4.3...v2.4.4
|
33
38
|
[2.4.3]: https://github.com/Invoca/exception_handling/compare/v2.4.2...v2.4.3
|
34
39
|
[2.4.2]: https://github.com/Invoca/exception_handling/compare/v2.4.1...v2.4.2
|
35
40
|
[2.4.1]: https://github.com/Invoca/exception_handling/compare/v2.4.0...v2.4.1
|
data/Gemfile.lock
CHANGED
@@ -8,7 +8,7 @@ GIT
|
|
8
8
|
PATH
|
9
9
|
remote: .
|
10
10
|
specs:
|
11
|
-
exception_handling (2.5.0.pre.
|
11
|
+
exception_handling (2.5.0.pre.2)
|
12
12
|
actionmailer (>= 4.2, < 7.0)
|
13
13
|
actionpack (>= 4.2, < 7.0)
|
14
14
|
activesupport (>= 4.2, < 7.0)
|
@@ -55,7 +55,7 @@ GEM
|
|
55
55
|
builder (3.2.3)
|
56
56
|
coderay (1.1.2)
|
57
57
|
concurrent-ruby (1.1.5)
|
58
|
-
contextual_logger (0.
|
58
|
+
contextual_logger (0.9.1)
|
59
59
|
activesupport
|
60
60
|
json
|
61
61
|
crass (1.0.6)
|
data/lib/exception_handling.rb
CHANGED
@@ -57,7 +57,7 @@ module ExceptionHandling # never included
|
|
57
57
|
Deprecation3_0 = ActiveSupport::Deprecation.new('3.0', 'exception_handling')
|
58
58
|
|
59
59
|
def logger=(logger)
|
60
|
-
@logger = if logger.is_a?(ContextualLogger::LoggerMixin)
|
60
|
+
@logger = if logger.nil? || logger.is_a?(ContextualLogger::LoggerMixin)
|
61
61
|
logger
|
62
62
|
else
|
63
63
|
Deprecation3_0.deprecation_warning('implicit extend with ContextualLogger::LoggerMixin', 'extend your logger instance or include into your logger class first')
|
@@ -195,7 +195,7 @@ module ExceptionHandling # never included
|
|
195
195
|
timestamp = set_log_error_timestamp
|
196
196
|
exception_info = ExceptionInfo.new(ex, exception_context, timestamp,
|
197
197
|
controller: controller || current_controller, data_callback: data_callback,
|
198
|
-
log_context: log_context)
|
198
|
+
log_context: logger.current_context_for_thread.deep_merge(log_context))
|
199
199
|
|
200
200
|
if stub_handler
|
201
201
|
stub_handler.handle_stub_log_error(exception_info.data)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Rake 11+ has a misfeature where @warning = true by default
|
4
|
+
# See https://github.com/ruby/rake/pull/97/files
|
5
|
+
# This causes all tests to be run with `ruby -w`, causing a huge number of warnings
|
6
|
+
# from gems we don't control and overwhelming our test output.
|
7
|
+
# This patch reverts that.
|
8
|
+
|
9
|
+
_ = Rake::TestTask
|
10
|
+
|
11
|
+
class Rake::TestTask
|
12
|
+
module SetWarningFalseMixin
|
13
|
+
def initialize(*args)
|
14
|
+
super
|
15
|
+
self.warning = false
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
prepend SetWarningFalseMixin
|
20
|
+
end
|
@@ -126,6 +126,11 @@ class ExceptionHandlingTest < ActiveSupport::TestCase
|
|
126
126
|
assert_equal ancestors, ExceptionHandling.logger.singleton_class.ancestors.*.name
|
127
127
|
end
|
128
128
|
|
129
|
+
should "allow logger = nil (no deprecation warning)" do
|
130
|
+
mock(STDERR).puts(/DEPRECATION WARNING/).never
|
131
|
+
ExceptionHandling.logger = nil
|
132
|
+
end
|
133
|
+
|
129
134
|
should "[deprecated] mix in ContextualLogger::Mixin if not there" do
|
130
135
|
mock(STDERR).puts(/DEPRECATION WARNING: implicit extend with ContextualLogger::LoggerMixin is deprecated and will be removed from exception_handling 3\.0/)
|
131
136
|
logger = Logger.new('/dev/null')
|
@@ -616,68 +621,122 @@ class ExceptionHandlingTest < ActiveSupport::TestCase
|
|
616
621
|
ExceptionHandling.log_error(exception_with_nil_message)
|
617
622
|
end
|
618
623
|
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
honeybadger_data = nil
|
636
|
-
mock(Honeybadger).notify.with_any_args do |data|
|
637
|
-
honeybadger_data = data
|
624
|
+
context "with stubbed values" do
|
625
|
+
setup do
|
626
|
+
Time.now_override = Time.now
|
627
|
+
@env = { server: "fe98" }
|
628
|
+
@parameters = { advertiser_id: 435, controller: "some_controller" }
|
629
|
+
@session = { username: "jsmith" }
|
630
|
+
@request_uri = "host/path"
|
631
|
+
@controller = create_dummy_controller(@env, @parameters, @session, @request_uri)
|
632
|
+
stub(ExceptionHandling).server_name { "invoca_fe98" }
|
633
|
+
|
634
|
+
@exception = StandardError.new("Some Exception")
|
635
|
+
@exception.set_backtrace([
|
636
|
+
"test/unit/exception_handling_test.rb:847:in `exception_1'",
|
637
|
+
"test/unit/exception_handling_test.rb:455:in `block (4 levels) in <class:ExceptionHandlingTest>'"
|
638
|
+
])
|
639
|
+
@exception_context = { "SERVER_NAME" => "exceptional.com" }
|
638
640
|
end
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
641
|
+
|
642
|
+
should "send error details and relevant context data to Honeybadger with log_context" do
|
643
|
+
honeybadger_data = nil
|
644
|
+
mock(Honeybadger).notify.with_any_args do |data|
|
645
|
+
honeybadger_data = data
|
646
|
+
end
|
647
|
+
ExceptionHandling.logger.global_context = { service_name: "rails", region: "AWS-us-east-1" }
|
648
|
+
log_context = { log_source: "gem/listen", service_name: "bin/console" }
|
649
|
+
ExceptionHandling.log_error(@exception, @exception_context, @controller, **log_context) do |data|
|
650
|
+
data[:scm_revision] = "5b24eac37aaa91f5784901e9aabcead36fd9df82"
|
651
|
+
data[:user_details] = { username: "jsmith" }
|
652
|
+
data[:event_response] = "Event successfully received"
|
653
|
+
data[:other_section] = "This should not be included in the response"
|
654
|
+
end
|
655
|
+
|
656
|
+
expected_data = {
|
657
|
+
error_class: :"Test Exception",
|
658
|
+
error_message: "Some Exception",
|
659
|
+
controller: "some_controller",
|
660
|
+
exception: @exception,
|
661
|
+
context: {
|
662
|
+
timestamp: Time.now.to_i,
|
663
|
+
error_class: "StandardError",
|
664
|
+
server: "invoca_fe98",
|
665
|
+
exception_context: { "SERVER_NAME" => "exceptional.com" },
|
666
|
+
scm_revision: "5b24eac37aaa91f5784901e9aabcead36fd9df82",
|
667
|
+
notes: "this is used by a test",
|
668
|
+
user_details: { "username" => "jsmith" },
|
669
|
+
request: {
|
670
|
+
"params" => { "advertiser_id" => 435, "controller" => "some_controller" },
|
671
|
+
"rails_root" => "Rails.root not defined. Is this a test environment?",
|
672
|
+
"url" => "host/path"
|
673
|
+
},
|
674
|
+
session: {
|
675
|
+
"key" => nil,
|
676
|
+
"data" => { "username" => "jsmith" }
|
677
|
+
},
|
678
|
+
environment: {
|
679
|
+
"SERVER_NAME" => "exceptional.com"
|
680
|
+
},
|
681
|
+
backtrace: [
|
682
|
+
"test/unit/exception_handling_test.rb:847:in `exception_1'",
|
683
|
+
"test/unit/exception_handling_test.rb:455:in `block (4 levels) in <class:ExceptionHandlingTest>'"
|
684
|
+
],
|
685
|
+
event_response: "Event successfully received",
|
686
|
+
log_context: { "service_name" => "bin/console", "region" => "AWS-us-east-1", "log_source" => "gem/listen" }
|
687
|
+
}
|
688
|
+
}
|
689
|
+
assert_equal_with_diff expected_data, honeybadger_data
|
645
690
|
end
|
646
691
|
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
"SERVER_NAME" => "exceptional.com"
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
692
|
+
should "send error details and relevant context data to Honeybadger with empty log_context" do
|
693
|
+
honeybadger_data = nil
|
694
|
+
mock(Honeybadger).notify.with_any_args do |data|
|
695
|
+
honeybadger_data = data
|
696
|
+
end
|
697
|
+
ExceptionHandling.logger.global_context = {}
|
698
|
+
log_context = {}
|
699
|
+
ExceptionHandling.log_error(@exception, @exception_context, @controller, **log_context) do |data|
|
700
|
+
data[:scm_revision] = "5b24eac37aaa91f5784901e9aabcead36fd9df82"
|
701
|
+
data[:user_details] = { username: "jsmith" }
|
702
|
+
data[:event_response] = "Event successfully received"
|
703
|
+
data[:other_section] = "This should not be included in the response"
|
704
|
+
end
|
705
|
+
|
706
|
+
expected_data = {
|
707
|
+
error_class: :"Test Exception",
|
708
|
+
error_message: "Some Exception",
|
709
|
+
controller: "some_controller",
|
710
|
+
exception: @exception,
|
711
|
+
context: {
|
712
|
+
timestamp: Time.now.to_i,
|
713
|
+
error_class: "StandardError",
|
714
|
+
server: "invoca_fe98",
|
715
|
+
exception_context: { "SERVER_NAME" => "exceptional.com" },
|
716
|
+
scm_revision: "5b24eac37aaa91f5784901e9aabcead36fd9df82",
|
717
|
+
notes: "this is used by a test",
|
718
|
+
user_details: { "username" => "jsmith" },
|
719
|
+
request: {
|
720
|
+
"params" => { "advertiser_id" => 435, "controller" => "some_controller" },
|
721
|
+
"rails_root" => "Rails.root not defined. Is this a test environment?",
|
722
|
+
"url" => "host/path"
|
723
|
+
},
|
724
|
+
session: {
|
725
|
+
"key" => nil,
|
726
|
+
"data" => { "username" => "jsmith" }
|
727
|
+
},
|
728
|
+
environment: {
|
729
|
+
"SERVER_NAME" => "exceptional.com"
|
730
|
+
},
|
731
|
+
backtrace: [
|
732
|
+
"test/unit/exception_handling_test.rb:847:in `exception_1'",
|
733
|
+
"test/unit/exception_handling_test.rb:455:in `block (4 levels) in <class:ExceptionHandlingTest>'"
|
734
|
+
],
|
735
|
+
event_response: "Event successfully received"
|
736
|
+
}
|
678
737
|
}
|
679
|
-
|
680
|
-
|
738
|
+
assert_equal_with_diff expected_data, honeybadger_data
|
739
|
+
end
|
681
740
|
end
|
682
741
|
|
683
742
|
context "with post_log_error_hook set" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exception_handling
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.0.pre.
|
4
|
+
version: 2.5.0.pre.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Invoca
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -150,6 +150,7 @@ files:
|
|
150
150
|
- lib/exception_handling/version.rb
|
151
151
|
- test/helpers/controller_helpers.rb
|
152
152
|
- test/helpers/exception_helpers.rb
|
153
|
+
- test/rake_test_warning_false.rb
|
153
154
|
- test/test_helper.rb
|
154
155
|
- test/unit/exception_handling/exception_catalog_test.rb
|
155
156
|
- test/unit/exception_handling/exception_description_test.rb
|
@@ -191,6 +192,7 @@ summary: Invoca's exception handling logger/emailer layer, based on exception_no
|
|
191
192
|
test_files:
|
192
193
|
- test/helpers/controller_helpers.rb
|
193
194
|
- test/helpers/exception_helpers.rb
|
195
|
+
- test/rake_test_warning_false.rb
|
194
196
|
- test/test_helper.rb
|
195
197
|
- test/unit/exception_handling/exception_catalog_test.rb
|
196
198
|
- test/unit/exception_handling/exception_description_test.rb
|