exception_handling 2.9.0 → 3.0.pre.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 +5 -5
- data/.gitignore +0 -3
- data/.ruby-version +1 -1
- data/Gemfile +16 -11
- data/Gemfile.lock +104 -96
- data/README.md +3 -7
- data/Rakefile +11 -8
- data/exception_handling.gemspec +10 -10
- data/lib/exception_handling/exception_info.rb +10 -13
- data/lib/exception_handling/honeybadger_callbacks.rb +1 -1
- data/lib/exception_handling/log_stub_error.rb +1 -2
- data/lib/exception_handling/methods.rb +53 -6
- data/lib/exception_handling/testing.rb +10 -20
- data/lib/exception_handling/version.rb +1 -1
- data/lib/exception_handling.rb +13 -42
- data/semaphore_ci/setup.sh +3 -0
- data/{spec → test}/helpers/controller_helpers.rb +0 -0
- data/{spec → test}/helpers/exception_helpers.rb +2 -2
- data/{spec/spec_helper.rb → test/test_helper.rb} +42 -63
- data/test/unit/exception_handling/exception_catalog_test.rb +85 -0
- data/test/unit/exception_handling/exception_description_test.rb +82 -0
- data/{spec/unit/exception_handling/exception_info_spec.rb → test/unit/exception_handling/exception_info_test.rb} +114 -153
- data/{spec/unit/exception_handling/honeybadger_callbacks_spec.rb → test/unit/exception_handling/honeybadger_callbacks_test.rb} +20 -20
- data/{spec/unit/exception_handling/log_error_stub_spec.rb → test/unit/exception_handling/log_error_stub_test.rb} +22 -38
- data/{spec/unit/exception_handling/mailer_spec.rb → test/unit/exception_handling/mailer_test.rb} +18 -17
- data/test/unit/exception_handling/methods_test.rb +84 -0
- data/test/unit/exception_handling/sensu_test.rb +52 -0
- data/test/unit/exception_handling_test.rb +1109 -0
- metadata +53 -86
- data/.jenkins/Jenkinsfile +0 -113
- data/.jenkins/ruby_build_pod.yml +0 -18
- data/.rspec +0 -3
- data/Appraisals +0 -19
- data/CHANGELOG.md +0 -77
- data/gemfiles/.bundle/config +0 -2
- data/gemfiles/rails_4.gemfile +0 -19
- data/gemfiles/rails_5.gemfile +0 -19
- data/gemfiles/rails_6.gemfile +0 -19
- data/lib/exception_handling/escalate_callback.rb +0 -19
- data/lib/exception_handling/logging_methods.rb +0 -27
- data/spec/rake_test_warning_false.rb +0 -20
- data/spec/unit/exception_handling/escalate_callback_spec.rb +0 -81
- data/spec/unit/exception_handling/exception_catalog_spec.rb +0 -85
- data/spec/unit/exception_handling/exception_description_spec.rb +0 -82
- data/spec/unit/exception_handling/logging_methods_spec.rb +0 -38
- data/spec/unit/exception_handling/methods_spec.rb +0 -105
- data/spec/unit/exception_handling/sensu_spec.rb +0 -51
- data/spec/unit/exception_handling_spec.rb +0 -1249
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 6aee76b81d1d4742150afdeb95f8a6f544671a3f
|
|
4
|
+
data.tar.gz: 4822461573c54709a2d977b82e47de35cecfa51e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: de1c0ab7cb7e7a493ce5f8c8d155ad98450edc891636e2d8e9d82ec2d8bdc312b45ba96f5902e0bc2d70adb35c0e4e20317bbea7d72d54625d7c2764ac2fb374
|
|
7
|
+
data.tar.gz: 7546dd2be9a2701d360cdd5fee3ea0e93b9a26e0072c835940659d5244c0e625743924cdde737fee08a7d5f909d03df1752b8e9ae6b8a7d354b62a77d8b89a57
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.
|
|
1
|
+
2.4.2
|
data/Gemfile
CHANGED
|
@@ -2,16 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
source 'https://rubygems.org'
|
|
4
4
|
|
|
5
|
+
# Specify your gem's dependencies in attr_default.gemspec
|
|
5
6
|
gemspec
|
|
6
7
|
|
|
7
|
-
gem 'actionmailer',
|
|
8
|
-
gem '
|
|
9
|
-
gem '
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
gem 'pry
|
|
13
|
-
gem 'rake'
|
|
14
|
-
gem '
|
|
15
|
-
gem '
|
|
16
|
-
gem '
|
|
17
|
-
|
|
8
|
+
gem 'actionmailer', '>= 4.2.11.1'
|
|
9
|
+
gem 'actionpack', '>= 4.2.11.1'
|
|
10
|
+
gem 'activesupport', '>= 4.2.11.1'
|
|
11
|
+
|
|
12
|
+
group :development do
|
|
13
|
+
gem 'pry'
|
|
14
|
+
gem 'rake', '>=0.9'
|
|
15
|
+
gem 'rr'
|
|
16
|
+
gem 'rubocop'
|
|
17
|
+
gem 'shoulda', '> 3.1.1'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
group :test do
|
|
21
|
+
gem 'honeybadger', '3.3.1-1', git: 'git@github.com:Invoca/honeybadger-ruby', ref: 'bb5f2b8a86e4147c38a6270d39ad610fab4dd5e6'
|
|
22
|
+
end
|
data/Gemfile.lock
CHANGED
|
@@ -8,119 +8,119 @@ GIT
|
|
|
8
8
|
PATH
|
|
9
9
|
remote: .
|
|
10
10
|
specs:
|
|
11
|
-
exception_handling (
|
|
12
|
-
actionmailer (
|
|
13
|
-
actionpack (
|
|
14
|
-
activesupport (
|
|
15
|
-
contextual_logger
|
|
16
|
-
escalate (~> 0.2)
|
|
11
|
+
exception_handling (3.0.pre.1)
|
|
12
|
+
actionmailer (~> 4.2)
|
|
13
|
+
actionpack (~> 4.2)
|
|
14
|
+
activesupport (~> 4.2)
|
|
15
|
+
contextual_logger
|
|
17
16
|
eventmachine (~> 1.0)
|
|
18
|
-
|
|
17
|
+
hobo_support
|
|
18
|
+
invoca-utils (~> 0.0)
|
|
19
19
|
|
|
20
20
|
GEM
|
|
21
21
|
remote: https://rubygems.org/
|
|
22
22
|
specs:
|
|
23
|
-
actionmailer (
|
|
24
|
-
actionpack (=
|
|
25
|
-
actionview (=
|
|
26
|
-
activejob (=
|
|
23
|
+
actionmailer (4.2.11.1)
|
|
24
|
+
actionpack (= 4.2.11.1)
|
|
25
|
+
actionview (= 4.2.11.1)
|
|
26
|
+
activejob (= 4.2.11.1)
|
|
27
27
|
mail (~> 2.5, >= 2.5.4)
|
|
28
|
-
rails-dom-testing (~>
|
|
29
|
-
actionpack (
|
|
30
|
-
actionview (=
|
|
31
|
-
activesupport (=
|
|
32
|
-
rack (~>
|
|
33
|
-
rack-test (
|
|
34
|
-
rails-dom-testing (~>
|
|
35
|
-
rails-html-sanitizer (~> 1.0, >= 1.2
|
|
36
|
-
actionview (
|
|
37
|
-
activesupport (=
|
|
28
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
|
29
|
+
actionpack (4.2.11.1)
|
|
30
|
+
actionview (= 4.2.11.1)
|
|
31
|
+
activesupport (= 4.2.11.1)
|
|
32
|
+
rack (~> 1.6)
|
|
33
|
+
rack-test (~> 0.6.2)
|
|
34
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
|
35
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
|
36
|
+
actionview (4.2.11.1)
|
|
37
|
+
activesupport (= 4.2.11.1)
|
|
38
38
|
builder (~> 3.1)
|
|
39
|
-
|
|
40
|
-
rails-dom-testing (~>
|
|
41
|
-
rails-html-sanitizer (~> 1.
|
|
42
|
-
activejob (
|
|
43
|
-
activesupport (=
|
|
44
|
-
globalid (>= 0.3.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
39
|
+
erubis (~> 2.7.0)
|
|
40
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
|
41
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
|
42
|
+
activejob (4.2.11.1)
|
|
43
|
+
activesupport (= 4.2.11.1)
|
|
44
|
+
globalid (>= 0.3.0)
|
|
45
|
+
activemodel (4.2.11.1)
|
|
46
|
+
activesupport (= 4.2.11.1)
|
|
47
|
+
builder (~> 3.1)
|
|
48
|
+
activerecord (4.2.11.1)
|
|
49
|
+
activemodel (= 4.2.11.1)
|
|
50
|
+
activesupport (= 4.2.11.1)
|
|
51
|
+
arel (~> 6.0)
|
|
52
|
+
activesupport (4.2.11.1)
|
|
53
|
+
i18n (~> 0.7)
|
|
48
54
|
minitest (~> 5.1)
|
|
55
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
|
49
56
|
tzinfo (~> 1.1)
|
|
50
|
-
|
|
51
|
-
appraisal (2.2.0)
|
|
52
|
-
bundler
|
|
53
|
-
rake
|
|
54
|
-
thor (>= 0.14.0)
|
|
57
|
+
arel (6.0.4)
|
|
55
58
|
ast (2.4.0)
|
|
56
|
-
builder (3.2.
|
|
57
|
-
byebug (11.1.3)
|
|
59
|
+
builder (3.2.3)
|
|
58
60
|
coderay (1.1.2)
|
|
59
|
-
concurrent-ruby (1.1.
|
|
60
|
-
contextual_logger (0.
|
|
61
|
+
concurrent-ruby (1.1.5)
|
|
62
|
+
contextual_logger (0.3.1)
|
|
61
63
|
activesupport
|
|
62
64
|
json
|
|
63
|
-
crass (1.0.
|
|
64
|
-
|
|
65
|
-
erubi (1.10.0)
|
|
66
|
-
escalate (0.2.0)
|
|
67
|
-
activesupport
|
|
65
|
+
crass (1.0.4)
|
|
66
|
+
erubis (2.7.0)
|
|
68
67
|
eventmachine (1.2.7)
|
|
69
68
|
globalid (0.4.2)
|
|
70
69
|
activesupport (>= 4.2.0)
|
|
71
|
-
|
|
70
|
+
hobo_support (2.2.6)
|
|
71
|
+
rails (~> 4.2.6)
|
|
72
|
+
i18n (0.9.5)
|
|
72
73
|
concurrent-ruby (~> 1.0)
|
|
73
|
-
invoca-utils (0.
|
|
74
|
+
invoca-utils (0.0.5)
|
|
74
75
|
jaro_winkler (1.5.3)
|
|
75
|
-
json (2.
|
|
76
|
-
loofah (2.
|
|
76
|
+
json (2.3.0)
|
|
77
|
+
loofah (2.2.3)
|
|
77
78
|
crass (~> 1.0.2)
|
|
78
79
|
nokogiri (>= 1.5.9)
|
|
79
80
|
mail (2.7.1)
|
|
80
81
|
mini_mime (>= 0.1.1)
|
|
81
82
|
method_source (0.9.2)
|
|
82
|
-
mini_mime (1.0.
|
|
83
|
-
mini_portile2 (2.
|
|
84
|
-
minitest (5.
|
|
85
|
-
nokogiri (1.
|
|
86
|
-
mini_portile2 (~> 2.
|
|
87
|
-
racc (~> 1.4)
|
|
83
|
+
mini_mime (1.0.1)
|
|
84
|
+
mini_portile2 (2.4.0)
|
|
85
|
+
minitest (5.11.3)
|
|
86
|
+
nokogiri (1.10.4)
|
|
87
|
+
mini_portile2 (~> 2.4.0)
|
|
88
88
|
parallel (1.17.0)
|
|
89
89
|
parser (2.6.3.0)
|
|
90
90
|
ast (~> 2.4.0)
|
|
91
|
-
power_assert (1.2.0)
|
|
92
91
|
pry (0.12.2)
|
|
93
92
|
coderay (~> 1.1.0)
|
|
94
93
|
method_source (~> 0.9.0)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
94
|
+
rack (1.6.11)
|
|
95
|
+
rack-test (0.6.3)
|
|
96
|
+
rack (>= 1.0)
|
|
97
|
+
rails (4.2.11.1)
|
|
98
|
+
actionmailer (= 4.2.11.1)
|
|
99
|
+
actionpack (= 4.2.11.1)
|
|
100
|
+
actionview (= 4.2.11.1)
|
|
101
|
+
activejob (= 4.2.11.1)
|
|
102
|
+
activemodel (= 4.2.11.1)
|
|
103
|
+
activerecord (= 4.2.11.1)
|
|
104
|
+
activesupport (= 4.2.11.1)
|
|
105
|
+
bundler (>= 1.3.0, < 2.0)
|
|
106
|
+
railties (= 4.2.11.1)
|
|
107
|
+
sprockets-rails
|
|
108
|
+
rails-deprecated_sanitizer (1.0.3)
|
|
109
|
+
activesupport (>= 4.2.0.alpha)
|
|
110
|
+
rails-dom-testing (1.0.9)
|
|
111
|
+
activesupport (>= 4.2.0, < 5.0)
|
|
112
|
+
nokogiri (~> 1.6)
|
|
113
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
|
114
|
+
rails-html-sanitizer (1.0.4)
|
|
115
|
+
loofah (~> 2.2, >= 2.2.2)
|
|
116
|
+
railties (4.2.11.1)
|
|
117
|
+
actionpack (= 4.2.11.1)
|
|
118
|
+
activesupport (= 4.2.11.1)
|
|
119
|
+
rake (>= 0.8.7)
|
|
120
|
+
thor (>= 0.18.1, < 2.0)
|
|
107
121
|
rainbow (3.0.0)
|
|
108
|
-
rake (
|
|
109
|
-
|
|
110
|
-
rspec-core (~> 3.9.0)
|
|
111
|
-
rspec-expectations (~> 3.9.0)
|
|
112
|
-
rspec-mocks (~> 3.9.0)
|
|
113
|
-
rspec-core (3.9.2)
|
|
114
|
-
rspec-support (~> 3.9.3)
|
|
115
|
-
rspec-expectations (3.9.2)
|
|
116
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
117
|
-
rspec-support (~> 3.9.0)
|
|
118
|
-
rspec-mocks (3.9.1)
|
|
119
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
120
|
-
rspec-support (~> 3.9.0)
|
|
121
|
-
rspec-support (3.9.3)
|
|
122
|
-
rspec_junit_formatter (0.4.1)
|
|
123
|
-
rspec-core (>= 2, < 4, != 2.12.0)
|
|
122
|
+
rake (12.3.2)
|
|
123
|
+
rr (1.2.1)
|
|
124
124
|
rubocop (0.74.0)
|
|
125
125
|
jaro_winkler (~> 1.5.1)
|
|
126
126
|
parallel (~> 1.10)
|
|
@@ -129,31 +129,39 @@ GEM
|
|
|
129
129
|
ruby-progressbar (~> 1.7)
|
|
130
130
|
unicode-display_width (>= 1.4.0, < 1.7)
|
|
131
131
|
ruby-progressbar (1.10.1)
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
shoulda (3.6.0)
|
|
133
|
+
shoulda-context (~> 1.0, >= 1.0.1)
|
|
134
|
+
shoulda-matchers (~> 3.0)
|
|
135
|
+
shoulda-context (1.2.2)
|
|
136
|
+
shoulda-matchers (3.1.3)
|
|
137
|
+
activesupport (>= 4.0.0)
|
|
138
|
+
sprockets (3.7.2)
|
|
139
|
+
concurrent-ruby (~> 1.0)
|
|
140
|
+
rack (> 1, < 3)
|
|
141
|
+
sprockets-rails (3.2.1)
|
|
142
|
+
actionpack (>= 4.0)
|
|
143
|
+
activesupport (>= 4.0)
|
|
144
|
+
sprockets (>= 3.0.0)
|
|
134
145
|
thor (1.0.1)
|
|
135
146
|
thread_safe (0.3.6)
|
|
136
|
-
tzinfo (1.2.
|
|
147
|
+
tzinfo (1.2.5)
|
|
137
148
|
thread_safe (~> 0.1)
|
|
138
149
|
unicode-display_width (1.6.0)
|
|
139
|
-
zeitwerk (2.4.2)
|
|
140
150
|
|
|
141
151
|
PLATFORMS
|
|
142
152
|
ruby
|
|
143
153
|
|
|
144
154
|
DEPENDENCIES
|
|
145
|
-
actionmailer (
|
|
146
|
-
|
|
147
|
-
|
|
155
|
+
actionmailer (>= 4.2.11.1)
|
|
156
|
+
actionpack (>= 4.2.11.1)
|
|
157
|
+
activesupport (>= 4.2.11.1)
|
|
148
158
|
exception_handling!
|
|
149
159
|
honeybadger (= 3.3.1.pre.1)!
|
|
150
160
|
pry
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
rspec
|
|
154
|
-
rspec_junit_formatter
|
|
161
|
+
rake (>= 0.9)
|
|
162
|
+
rr
|
|
155
163
|
rubocop
|
|
156
|
-
|
|
164
|
+
shoulda (> 3.1.1)
|
|
157
165
|
|
|
158
166
|
BUNDLED WITH
|
|
159
|
-
1.17.
|
|
167
|
+
1.17.2
|
data/README.md
CHANGED
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Enable emails for your exceptions that occur in your application!
|
|
4
4
|
|
|
5
|
-
## Dependencies
|
|
6
|
-
- Ruby 2.6
|
|
7
|
-
- Rails >= 4.2, < 7
|
|
8
|
-
|
|
9
5
|
## Installation
|
|
10
6
|
|
|
11
7
|
Add this line to your application's Gemfile:
|
|
@@ -93,15 +89,15 @@ There is another hook available intended for custom actions after an error email
|
|
|
93
89
|
else
|
|
94
90
|
Invoca::Metrics::Client.metrics.counter("exception_handling/exception")
|
|
95
91
|
end
|
|
96
|
-
|
|
92
|
+
|
|
97
93
|
case honeybadger_status
|
|
98
94
|
when :success
|
|
99
95
|
Invoca::Metrics::Client.metrics.counter("exception_handling.honeybadger.success")
|
|
100
|
-
when :failure
|
|
96
|
+
when :failure
|
|
101
97
|
Invoca::Metrics::Client.metrics.counter("exception_handling.honeybadger.failure")
|
|
102
98
|
when :skipped
|
|
103
99
|
Invoca::Metrics::Client.metrics.counter("exception_handling.honeybadger.skipped")
|
|
104
|
-
end
|
|
100
|
+
end
|
|
105
101
|
end
|
|
106
102
|
ExceptionHandling.post_log_error_hook = method(:log_error_metrics)
|
|
107
103
|
|
data/Rakefile
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env rake
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
|
-
require 'rake/testtask'
|
|
5
4
|
require "bundler/gem_tasks"
|
|
5
|
+
require 'rake/testtask'
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
namespace :test do
|
|
8
|
+
Rake::TestTask.new do |t|
|
|
9
|
+
t.name = :unit
|
|
10
|
+
t.libs << "test"
|
|
11
|
+
t.pattern = 'test/unit/**/*_test.rb'
|
|
12
|
+
t.verbose = true
|
|
13
|
+
end
|
|
14
|
+
Rake::Task['test:unit'].comment = "Run the unit tests"
|
|
13
15
|
end
|
|
14
16
|
|
|
15
|
-
task
|
|
17
|
+
task test: 'test:unit'
|
|
18
|
+
task default: 'test'
|
data/exception_handling.gemspec
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
require File.expand_path('lib/exception_handling/version', __dir__)
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
|
-
spec.authors = ["
|
|
7
|
-
spec.email = ["
|
|
6
|
+
spec.authors = ["Colin Kelley"]
|
|
7
|
+
spec.email = ["colindkelley@gmail.com"]
|
|
8
8
|
spec.description = 'Exception handling logger/emailer'
|
|
9
9
|
spec.summary = "Invoca's exception handling logger/emailer layer, based on exception_notifier. Works with Rails or EventMachine or EventMachine+Synchrony."
|
|
10
10
|
spec.homepage = "https://github.com/Invoca/exception_handling"
|
|
11
11
|
|
|
12
|
-
spec.files = `git ls-files`.split(
|
|
12
|
+
spec.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
|
|
13
13
|
spec.executables = spec.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
|
14
14
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/.*\.rb})
|
|
15
15
|
spec.name = "exception_handling"
|
|
@@ -20,11 +20,11 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
"allowed_push_host" => "https://rubygems.org"
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
spec.add_dependency 'actionmailer',
|
|
24
|
-
spec.add_dependency 'actionpack',
|
|
25
|
-
spec.add_dependency 'activesupport',
|
|
26
|
-
spec.add_dependency 'contextual_logger'
|
|
27
|
-
spec.add_dependency '
|
|
28
|
-
spec.add_dependency '
|
|
29
|
-
spec.add_dependency 'invoca-utils',
|
|
23
|
+
spec.add_dependency 'actionmailer', '~> 4.2'
|
|
24
|
+
spec.add_dependency 'actionpack', '~> 4.2'
|
|
25
|
+
spec.add_dependency 'activesupport', '~> 4.2'
|
|
26
|
+
spec.add_dependency 'contextual_logger'
|
|
27
|
+
spec.add_dependency 'eventmachine', '~> 1.0'
|
|
28
|
+
spec.add_dependency 'hobo_support'
|
|
29
|
+
spec.add_dependency 'invoca-utils', '~> 0.0'
|
|
30
30
|
end
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
module ExceptionHandling
|
|
4
4
|
class ExceptionInfo
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
ENVIRONMENT_WHITELIST = [
|
|
7
7
|
/^HTTP_/,
|
|
8
8
|
/^QUERY_/,
|
|
9
9
|
/^REQUEST_/,
|
|
@@ -46,19 +46,16 @@ module ExceptionHandling
|
|
|
46
46
|
EOS
|
|
47
47
|
|
|
48
48
|
SECTIONS = [:request, :session, :environment, :backtrace, :event_response].freeze
|
|
49
|
-
HONEYBADGER_CONTEXT_SECTIONS = [:timestamp, :error_class, :exception_context, :server, :scm_revision, :notes,
|
|
50
|
-
:user_details, :request, :session, :environment, :backtrace, :event_response, :log_context].freeze
|
|
49
|
+
HONEYBADGER_CONTEXT_SECTIONS = [:timestamp, :error_class, :exception_context, :server, :scm_revision, :notes, :user_details, :request, :session, :environment, :backtrace, :event_response].freeze
|
|
51
50
|
|
|
52
51
|
attr_reader :exception, :controller, :exception_context, :timestamp
|
|
53
52
|
|
|
54
|
-
def initialize(exception, exception_context, timestamp, controller
|
|
53
|
+
def initialize(exception, exception_context, timestamp, controller = nil, data_callback = nil)
|
|
55
54
|
@exception = exception
|
|
56
55
|
@exception_context = exception_context
|
|
57
56
|
@timestamp = timestamp
|
|
58
57
|
@controller = controller || controller_from_context(exception_context)
|
|
59
58
|
@data_callback = data_callback
|
|
60
|
-
# merge into the surrounding context just like ContextualLogger does when logging
|
|
61
|
-
@merged_log_context = ExceptionHandling.logger.current_context_for_thread.deep_merge(log_context || {})
|
|
62
59
|
end
|
|
63
60
|
|
|
64
61
|
def data
|
|
@@ -82,10 +79,9 @@ module ExceptionHandling
|
|
|
82
79
|
end
|
|
83
80
|
|
|
84
81
|
def controller_name
|
|
85
|
-
@controller_name ||=
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
).to_s
|
|
82
|
+
@controller_name ||= if @controller
|
|
83
|
+
@controller.request.parameters.with_indifferent_access[:controller]
|
|
84
|
+
end.to_s
|
|
89
85
|
end
|
|
90
86
|
|
|
91
87
|
private
|
|
@@ -180,7 +176,7 @@ module ExceptionHandling
|
|
|
180
176
|
|
|
181
177
|
def clean_environment(env)
|
|
182
178
|
Hash[ env.map do |k, v|
|
|
183
|
-
[k, v] if !"#{k}: #{v}".in?(ENVIRONMENT_OMIT) &&
|
|
179
|
+
[k, v] if !"#{k}: #{v}".in?(ENVIRONMENT_OMIT) && ENVIRONMENT_WHITELIST.any? { |regex| k =~ regex }
|
|
184
180
|
end.compact ]
|
|
185
181
|
end
|
|
186
182
|
|
|
@@ -271,13 +267,14 @@ module ExceptionHandling
|
|
|
271
267
|
data = enhanced_data.dup
|
|
272
268
|
data[:server] = ExceptionHandling.server_name
|
|
273
269
|
data[:exception_context] = deep_clean_hash(@exception_context) if @exception_context.present?
|
|
274
|
-
data[:log_context] = @merged_log_context
|
|
275
270
|
unstringify_sections(data)
|
|
276
|
-
HONEYBADGER_CONTEXT_SECTIONS.
|
|
271
|
+
context_data = HONEYBADGER_CONTEXT_SECTIONS.reduce({}) do |context, section|
|
|
277
272
|
if data[section].present?
|
|
278
273
|
context[section] = data[section]
|
|
279
274
|
end
|
|
275
|
+
context
|
|
280
276
|
end
|
|
277
|
+
context_data
|
|
281
278
|
end
|
|
282
279
|
end
|
|
283
280
|
end
|
|
@@ -1,15 +1,65 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'active_support/concern'
|
|
4
|
-
require_relative 'logging_methods'
|
|
5
4
|
|
|
6
5
|
module ExceptionHandling
|
|
7
6
|
module Methods # included on models and controllers
|
|
8
7
|
extend ActiveSupport::Concern
|
|
9
|
-
include ExceptionHandling::LoggingMethods
|
|
10
8
|
|
|
11
9
|
protected
|
|
12
10
|
|
|
11
|
+
def log_error(exception_or_string, exception_context = '')
|
|
12
|
+
controller = self if respond_to?(:request) && respond_to?(:session)
|
|
13
|
+
ExceptionHandling.log_error(exception_or_string, exception_context, controller)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def log_error_rack(exception_or_string, exception_context = '', rack_filter = '')
|
|
17
|
+
ExceptionHandling.log_error_rack(exception_or_string, exception_context, rack_filter)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def log_warning(message)
|
|
21
|
+
ExceptionHandling.log_warning(message)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def log_info(message)
|
|
25
|
+
ExceptionHandling.logger.info(message)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def log_debug(message)
|
|
29
|
+
ExceptionHandling.logger.debug(message)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def ensure_safe(exception_context = "")
|
|
33
|
+
yield
|
|
34
|
+
rescue => ex
|
|
35
|
+
log_error ex, exception_context
|
|
36
|
+
nil
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def escalate_error(exception_or_string, email_subject)
|
|
40
|
+
ExceptionHandling.escalate_error(exception_or_string, email_subject)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def escalate_warning(message, email_subject)
|
|
44
|
+
ExceptionHandling.escalate_warning(message, email_subject)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def ensure_escalation(*args)
|
|
48
|
+
ExceptionHandling.ensure_escalation(*args) do
|
|
49
|
+
yield
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def alert_warning(*args)
|
|
54
|
+
ExceptionHandling.alert_warning(*args)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def ensure_alert(*args)
|
|
58
|
+
ExceptionHandling.ensure_alert(*args) do
|
|
59
|
+
yield
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
13
63
|
def long_controller_action_timeout
|
|
14
64
|
if defined?(Rails) && Rails.respond_to?(:env) && Rails.env == 'test'
|
|
15
65
|
300
|
|
@@ -38,10 +88,7 @@ module ExceptionHandling
|
|
|
38
88
|
end
|
|
39
89
|
|
|
40
90
|
included do
|
|
41
|
-
|
|
42
|
-
if respond_to? :around_filter
|
|
43
|
-
around_filter :set_current_controller
|
|
44
|
-
end
|
|
91
|
+
around_filter :set_current_controller if respond_to? :around_filter
|
|
45
92
|
end
|
|
46
93
|
|
|
47
94
|
class_methods do
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
module ExceptionHandling
|
|
6
6
|
module Testing
|
|
7
|
-
class
|
|
7
|
+
class ControllerStub
|
|
8
8
|
|
|
9
9
|
class Request
|
|
10
10
|
attr_accessor :parameters, :protocol, :host, :request_uri, :env, :session_options
|
|
@@ -25,7 +25,7 @@ module ExceptionHandling
|
|
|
25
25
|
attr_accessor :around_filter_method
|
|
26
26
|
|
|
27
27
|
def around_filter(method)
|
|
28
|
-
|
|
28
|
+
ControllerStub.around_filter_method = method
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
|
|
@@ -44,6 +44,14 @@ module ExceptionHandling
|
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
+
def simulate_around_filter(&block)
|
|
48
|
+
set_current_controller(&block)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def controller_name
|
|
52
|
+
"ControllerStub"
|
|
53
|
+
end
|
|
54
|
+
|
|
47
55
|
def action_name
|
|
48
56
|
"test_action"
|
|
49
57
|
end
|
|
@@ -51,27 +59,9 @@ module ExceptionHandling
|
|
|
51
59
|
def complete_request_uri
|
|
52
60
|
"#{@request.protocol}#{@request.host}#{@request.request_uri}"
|
|
53
61
|
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
class LoggingMethodsControllerStub < ControllerStubBase
|
|
57
|
-
include ExceptionHandling::LoggingMethods
|
|
58
|
-
|
|
59
|
-
def controller_name
|
|
60
|
-
"LoggingMethodsControllerStub"
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
62
|
|
|
64
|
-
class MethodsControllerStub < ControllerStubBase
|
|
65
63
|
include ExceptionHandling::Methods
|
|
66
64
|
set_long_controller_action_timeout 2
|
|
67
|
-
|
|
68
|
-
def simulate_around_filter(&block)
|
|
69
|
-
set_current_controller(&block)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def controller_name
|
|
73
|
-
"MethodsControllerStub"
|
|
74
|
-
end
|
|
75
65
|
end
|
|
76
66
|
end
|
|
77
67
|
end
|