honeybadger 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Appraisals +20 -0
- data/Gemfile +1 -13
- data/Gemfile.lock +39 -64
- data/MIT-LICENSE +5 -0
- data/README.md +102 -3
- data/Rakefile +9 -134
- data/features/metal.feature +6 -4
- data/features/rack.feature +3 -4
- data/features/rails.feature +106 -99
- data/features/rake.feature +0 -2
- data/features/sinatra.feature +1 -3
- data/features/step_definitions/metal_steps.rb +2 -1
- data/features/step_definitions/rack_steps.rb +2 -2
- data/features/step_definitions/rails_steps.rb +238 -0
- data/features/step_definitions/rake_steps.rb +1 -1
- data/features/support/env.rb +7 -7
- data/features/support/rails.rb +41 -58
- data/gemfiles/rails2.3.gemfile +9 -0
- data/gemfiles/rails2.3.gemfile.lock +102 -0
- data/gemfiles/rails3.0.gemfile +8 -0
- data/gemfiles/rails3.0.gemfile.lock +146 -0
- data/gemfiles/rails3.1.gemfile +8 -0
- data/gemfiles/rails3.1.gemfile.lock +161 -0
- data/gemfiles/rails3.2.gemfile +8 -0
- data/gemfiles/rails3.2.gemfile.lock +160 -0
- data/honeybadger.gemspec +30 -24
- data/lib/honeybadger.rb +117 -113
- data/lib/honeybadger/backtrace.rb +9 -3
- data/lib/honeybadger/configuration.rb +22 -0
- data/lib/honeybadger/notice.rb +9 -0
- data/lib/honeybadger/rack.rb +5 -4
- data/lib/honeybadger/rails3_tasks.rb +20 -23
- data/lib/honeybadger/sender.rb +10 -4
- data/lib/honeybadger/shared_tasks.rb +12 -1
- data/lib/honeybadger/tasks.rb +6 -1
- data/test/test_helper.rb +71 -71
- data/test/unit/backtrace_test.rb +26 -23
- data/test/unit/capistrano_test.rb +1 -1
- data/test/unit/configuration_test.rb +19 -3
- data/test/unit/honeybadger_tasks_test.rb +1 -1
- data/test/unit/logger_test.rb +1 -1
- data/test/unit/notice_test.rb +71 -16
- data/test/unit/notifier_test.rb +25 -5
- data/test/unit/rack_test.rb +21 -1
- data/test/unit/rails/action_controller_catcher_test.rb +1 -1
- data/test/unit/rails_test.rb +1 -1
- data/test/unit/sender_test.rb +1 -1
- metadata +69 -45
- data/SUPPORTED_RAILS_VERSIONS +0 -37
- data/TESTING.md +0 -33
- data/features/step_definitions/file_steps.rb +0 -10
- data/features/step_definitions/rails_application_steps.rb +0 -394
- data/features/support/terminal.rb +0 -107
@@ -0,0 +1,161 @@
|
|
1
|
+
PATH
|
2
|
+
remote: /Users/josh/code/honeybadger-ruby
|
3
|
+
specs:
|
4
|
+
honeybadger (1.3.1)
|
5
|
+
activesupport
|
6
|
+
json
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: http://rubygems.org/
|
10
|
+
specs:
|
11
|
+
actionmailer (3.1.8)
|
12
|
+
actionpack (= 3.1.8)
|
13
|
+
mail (~> 2.3.3)
|
14
|
+
actionpack (3.1.8)
|
15
|
+
activemodel (= 3.1.8)
|
16
|
+
activesupport (= 3.1.8)
|
17
|
+
builder (~> 3.0.0)
|
18
|
+
erubis (~> 2.7.0)
|
19
|
+
i18n (~> 0.6)
|
20
|
+
rack (~> 1.3.6)
|
21
|
+
rack-cache (~> 1.2)
|
22
|
+
rack-mount (~> 0.8.2)
|
23
|
+
rack-test (~> 0.6.1)
|
24
|
+
sprockets (~> 2.0.4)
|
25
|
+
activemodel (3.1.8)
|
26
|
+
activesupport (= 3.1.8)
|
27
|
+
builder (~> 3.0.0)
|
28
|
+
i18n (~> 0.6)
|
29
|
+
activerecord (3.1.8)
|
30
|
+
activemodel (= 3.1.8)
|
31
|
+
activesupport (= 3.1.8)
|
32
|
+
arel (~> 2.2.3)
|
33
|
+
tzinfo (~> 0.3.29)
|
34
|
+
activeresource (3.1.8)
|
35
|
+
activemodel (= 3.1.8)
|
36
|
+
activesupport (= 3.1.8)
|
37
|
+
activesupport (3.1.8)
|
38
|
+
multi_json (>= 1.0, < 1.3)
|
39
|
+
appraisal (0.5.1)
|
40
|
+
bundler
|
41
|
+
rake
|
42
|
+
arel (2.2.3)
|
43
|
+
aruba (0.5.1)
|
44
|
+
childprocess (~> 0.3.6)
|
45
|
+
cucumber (>= 1.1.1)
|
46
|
+
rspec-expectations (>= 2.7.0)
|
47
|
+
bourne (1.1.2)
|
48
|
+
mocha (= 0.10.5)
|
49
|
+
builder (3.0.4)
|
50
|
+
capistrano (2.13.5)
|
51
|
+
highline
|
52
|
+
net-scp (>= 1.0.0)
|
53
|
+
net-sftp (>= 2.0.0)
|
54
|
+
net-ssh (>= 2.0.14)
|
55
|
+
net-ssh-gateway (>= 1.1.0)
|
56
|
+
childprocess (0.3.6)
|
57
|
+
ffi (~> 1.0, >= 1.0.6)
|
58
|
+
cucumber (1.2.1)
|
59
|
+
builder (>= 2.1.2)
|
60
|
+
diff-lcs (>= 1.1.3)
|
61
|
+
gherkin (~> 2.11.0)
|
62
|
+
json (>= 1.4.6)
|
63
|
+
diff-lcs (1.1.3)
|
64
|
+
erubis (2.7.0)
|
65
|
+
fakeweb (1.3.0)
|
66
|
+
ffi (1.2.0)
|
67
|
+
gherkin (2.11.5)
|
68
|
+
json (>= 1.4.6)
|
69
|
+
highline (1.6.15)
|
70
|
+
hike (1.2.1)
|
71
|
+
i18n (0.6.1)
|
72
|
+
json (1.7.5)
|
73
|
+
mail (2.3.3)
|
74
|
+
i18n (>= 0.4.0)
|
75
|
+
mime-types (~> 1.16)
|
76
|
+
treetop (~> 1.4.8)
|
77
|
+
metaclass (0.0.1)
|
78
|
+
mime-types (1.19)
|
79
|
+
mocha (0.10.5)
|
80
|
+
metaclass (~> 0.0.1)
|
81
|
+
multi_json (1.2.0)
|
82
|
+
net-scp (1.0.4)
|
83
|
+
net-ssh (>= 1.99.1)
|
84
|
+
net-sftp (2.0.5)
|
85
|
+
net-ssh (>= 2.0.9)
|
86
|
+
net-ssh (2.6.2)
|
87
|
+
net-ssh-gateway (1.1.0)
|
88
|
+
net-ssh (>= 1.99.1)
|
89
|
+
polyglot (0.3.3)
|
90
|
+
rack (1.3.6)
|
91
|
+
rack-cache (1.2)
|
92
|
+
rack (>= 0.4)
|
93
|
+
rack-mount (0.8.3)
|
94
|
+
rack (>= 1.0.0)
|
95
|
+
rack-protection (1.2.0)
|
96
|
+
rack
|
97
|
+
rack-ssl (1.3.2)
|
98
|
+
rack
|
99
|
+
rack-test (0.6.2)
|
100
|
+
rack (>= 1.0)
|
101
|
+
rails (3.1.8)
|
102
|
+
actionmailer (= 3.1.8)
|
103
|
+
actionpack (= 3.1.8)
|
104
|
+
activerecord (= 3.1.8)
|
105
|
+
activeresource (= 3.1.8)
|
106
|
+
activesupport (= 3.1.8)
|
107
|
+
bundler (~> 1.0)
|
108
|
+
railties (= 3.1.8)
|
109
|
+
railties (3.1.8)
|
110
|
+
actionpack (= 3.1.8)
|
111
|
+
activesupport (= 3.1.8)
|
112
|
+
rack-ssl (~> 1.3.2)
|
113
|
+
rake (>= 0.8.7)
|
114
|
+
rdoc (~> 3.4)
|
115
|
+
thor (~> 0.14.6)
|
116
|
+
rake (10.0.2)
|
117
|
+
rdoc (3.12)
|
118
|
+
json (~> 1.4)
|
119
|
+
rspec (2.12.0)
|
120
|
+
rspec-core (~> 2.12.0)
|
121
|
+
rspec-expectations (~> 2.12.0)
|
122
|
+
rspec-mocks (~> 2.12.0)
|
123
|
+
rspec-core (2.12.0)
|
124
|
+
rspec-expectations (2.12.0)
|
125
|
+
diff-lcs (~> 1.1.3)
|
126
|
+
rspec-mocks (2.12.0)
|
127
|
+
sham_rack (1.3.4)
|
128
|
+
rack
|
129
|
+
shoulda (2.11.3)
|
130
|
+
sinatra (1.3.2)
|
131
|
+
rack (~> 1.3, >= 1.3.6)
|
132
|
+
rack-protection (~> 1.2)
|
133
|
+
tilt (~> 1.3, >= 1.3.3)
|
134
|
+
sprockets (2.0.4)
|
135
|
+
hike (~> 1.2)
|
136
|
+
rack (~> 1.0)
|
137
|
+
tilt (~> 1.1, != 1.3.0)
|
138
|
+
thor (0.14.6)
|
139
|
+
tilt (1.3.3)
|
140
|
+
treetop (1.4.12)
|
141
|
+
polyglot
|
142
|
+
polyglot (>= 0.3.1)
|
143
|
+
tzinfo (0.3.35)
|
144
|
+
|
145
|
+
PLATFORMS
|
146
|
+
ruby
|
147
|
+
|
148
|
+
DEPENDENCIES
|
149
|
+
appraisal
|
150
|
+
aruba
|
151
|
+
bourne (>= 1.0)
|
152
|
+
capistrano
|
153
|
+
cucumber (~> 1.2.1)
|
154
|
+
fakeweb (~> 1.3.0)
|
155
|
+
honeybadger!
|
156
|
+
rails (= 3.1.8)
|
157
|
+
rake
|
158
|
+
rspec (~> 2.12.0)
|
159
|
+
sham_rack (~> 1.3.0)
|
160
|
+
shoulda (~> 2.11.3)
|
161
|
+
sinatra
|
@@ -0,0 +1,160 @@
|
|
1
|
+
PATH
|
2
|
+
remote: /Users/josh/code/honeybadger-ruby
|
3
|
+
specs:
|
4
|
+
honeybadger (1.3.1)
|
5
|
+
activesupport
|
6
|
+
json
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: http://rubygems.org/
|
10
|
+
specs:
|
11
|
+
actionmailer (3.2.9)
|
12
|
+
actionpack (= 3.2.9)
|
13
|
+
mail (~> 2.4.4)
|
14
|
+
actionpack (3.2.9)
|
15
|
+
activemodel (= 3.2.9)
|
16
|
+
activesupport (= 3.2.9)
|
17
|
+
builder (~> 3.0.0)
|
18
|
+
erubis (~> 2.7.0)
|
19
|
+
journey (~> 1.0.4)
|
20
|
+
rack (~> 1.4.0)
|
21
|
+
rack-cache (~> 1.2)
|
22
|
+
rack-test (~> 0.6.1)
|
23
|
+
sprockets (~> 2.2.1)
|
24
|
+
activemodel (3.2.9)
|
25
|
+
activesupport (= 3.2.9)
|
26
|
+
builder (~> 3.0.0)
|
27
|
+
activerecord (3.2.9)
|
28
|
+
activemodel (= 3.2.9)
|
29
|
+
activesupport (= 3.2.9)
|
30
|
+
arel (~> 3.0.2)
|
31
|
+
tzinfo (~> 0.3.29)
|
32
|
+
activeresource (3.2.9)
|
33
|
+
activemodel (= 3.2.9)
|
34
|
+
activesupport (= 3.2.9)
|
35
|
+
activesupport (3.2.9)
|
36
|
+
i18n (~> 0.6)
|
37
|
+
multi_json (~> 1.0)
|
38
|
+
appraisal (0.5.1)
|
39
|
+
bundler
|
40
|
+
rake
|
41
|
+
arel (3.0.2)
|
42
|
+
aruba (0.5.1)
|
43
|
+
childprocess (~> 0.3.6)
|
44
|
+
cucumber (>= 1.1.1)
|
45
|
+
rspec-expectations (>= 2.7.0)
|
46
|
+
bourne (1.1.2)
|
47
|
+
mocha (= 0.10.5)
|
48
|
+
builder (3.0.4)
|
49
|
+
capistrano (2.13.5)
|
50
|
+
highline
|
51
|
+
net-scp (>= 1.0.0)
|
52
|
+
net-sftp (>= 2.0.0)
|
53
|
+
net-ssh (>= 2.0.14)
|
54
|
+
net-ssh-gateway (>= 1.1.0)
|
55
|
+
childprocess (0.3.6)
|
56
|
+
ffi (~> 1.0, >= 1.0.6)
|
57
|
+
cucumber (1.2.1)
|
58
|
+
builder (>= 2.1.2)
|
59
|
+
diff-lcs (>= 1.1.3)
|
60
|
+
gherkin (~> 2.11.0)
|
61
|
+
json (>= 1.4.6)
|
62
|
+
diff-lcs (1.1.3)
|
63
|
+
erubis (2.7.0)
|
64
|
+
fakeweb (1.3.0)
|
65
|
+
ffi (1.2.0)
|
66
|
+
gherkin (2.11.5)
|
67
|
+
json (>= 1.4.6)
|
68
|
+
highline (1.6.15)
|
69
|
+
hike (1.2.1)
|
70
|
+
i18n (0.6.1)
|
71
|
+
journey (1.0.4)
|
72
|
+
json (1.7.5)
|
73
|
+
mail (2.4.4)
|
74
|
+
i18n (>= 0.4.0)
|
75
|
+
mime-types (~> 1.16)
|
76
|
+
treetop (~> 1.4.8)
|
77
|
+
metaclass (0.0.1)
|
78
|
+
mime-types (1.19)
|
79
|
+
mocha (0.10.5)
|
80
|
+
metaclass (~> 0.0.1)
|
81
|
+
multi_json (1.3.7)
|
82
|
+
net-scp (1.0.4)
|
83
|
+
net-ssh (>= 1.99.1)
|
84
|
+
net-sftp (2.0.5)
|
85
|
+
net-ssh (>= 2.0.9)
|
86
|
+
net-ssh (2.6.2)
|
87
|
+
net-ssh-gateway (1.1.0)
|
88
|
+
net-ssh (>= 1.99.1)
|
89
|
+
polyglot (0.3.3)
|
90
|
+
rack (1.4.1)
|
91
|
+
rack-cache (1.2)
|
92
|
+
rack (>= 0.4)
|
93
|
+
rack-protection (1.2.0)
|
94
|
+
rack
|
95
|
+
rack-ssl (1.3.2)
|
96
|
+
rack
|
97
|
+
rack-test (0.6.2)
|
98
|
+
rack (>= 1.0)
|
99
|
+
rails (3.2.9)
|
100
|
+
actionmailer (= 3.2.9)
|
101
|
+
actionpack (= 3.2.9)
|
102
|
+
activerecord (= 3.2.9)
|
103
|
+
activeresource (= 3.2.9)
|
104
|
+
activesupport (= 3.2.9)
|
105
|
+
bundler (~> 1.0)
|
106
|
+
railties (= 3.2.9)
|
107
|
+
railties (3.2.9)
|
108
|
+
actionpack (= 3.2.9)
|
109
|
+
activesupport (= 3.2.9)
|
110
|
+
rack-ssl (~> 1.3.2)
|
111
|
+
rake (>= 0.8.7)
|
112
|
+
rdoc (~> 3.4)
|
113
|
+
thor (>= 0.14.6, < 2.0)
|
114
|
+
rake (10.0.2)
|
115
|
+
rdoc (3.12)
|
116
|
+
json (~> 1.4)
|
117
|
+
rspec (2.12.0)
|
118
|
+
rspec-core (~> 2.12.0)
|
119
|
+
rspec-expectations (~> 2.12.0)
|
120
|
+
rspec-mocks (~> 2.12.0)
|
121
|
+
rspec-core (2.12.0)
|
122
|
+
rspec-expectations (2.12.0)
|
123
|
+
diff-lcs (~> 1.1.3)
|
124
|
+
rspec-mocks (2.12.0)
|
125
|
+
sham_rack (1.3.4)
|
126
|
+
rack
|
127
|
+
shoulda (2.11.3)
|
128
|
+
sinatra (1.3.3)
|
129
|
+
rack (~> 1.3, >= 1.3.6)
|
130
|
+
rack-protection (~> 1.2)
|
131
|
+
tilt (~> 1.3, >= 1.3.3)
|
132
|
+
sprockets (2.2.2)
|
133
|
+
hike (~> 1.2)
|
134
|
+
multi_json (~> 1.0)
|
135
|
+
rack (~> 1.0)
|
136
|
+
tilt (~> 1.1, != 1.3.0)
|
137
|
+
thor (0.16.0)
|
138
|
+
tilt (1.3.3)
|
139
|
+
treetop (1.4.12)
|
140
|
+
polyglot
|
141
|
+
polyglot (>= 0.3.1)
|
142
|
+
tzinfo (0.3.35)
|
143
|
+
|
144
|
+
PLATFORMS
|
145
|
+
ruby
|
146
|
+
|
147
|
+
DEPENDENCIES
|
148
|
+
appraisal
|
149
|
+
aruba
|
150
|
+
bourne (>= 1.0)
|
151
|
+
capistrano
|
152
|
+
cucumber (~> 1.2.1)
|
153
|
+
fakeweb (~> 1.3.0)
|
154
|
+
honeybadger!
|
155
|
+
rails (= 3.2.9)
|
156
|
+
rake
|
157
|
+
rspec (~> 2.12.0)
|
158
|
+
sham_rack (~> 1.3.0)
|
159
|
+
shoulda (~> 2.11.3)
|
160
|
+
sinatra
|
data/honeybadger.gemspec
CHANGED
@@ -1,66 +1,72 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
3
|
-
s.required_rubygems_version = Gem::Requirement.new(
|
3
|
+
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
4
4
|
s.rubygems_version = '1.3.5'
|
5
5
|
|
6
6
|
s.name = 'honeybadger'
|
7
|
-
s.version = '1.
|
8
|
-
s.date = '2012-
|
7
|
+
s.version = '1.4.0'
|
8
|
+
s.date = '2012-12-14'
|
9
9
|
|
10
|
-
s.summary =
|
11
|
-
s.description =
|
10
|
+
s.summary = 'Error reports you can be happy about.'
|
11
|
+
s.description = 'Make managing application errors a more pleasant experience.'
|
12
12
|
|
13
|
-
s.authors = [
|
13
|
+
s.authors = ['Joshua Wood']
|
14
14
|
s.email = 'josh@honeybadger.io'
|
15
15
|
s.homepage = 'http://www.honeybadger.io'
|
16
16
|
|
17
17
|
s.require_paths = %w[lib]
|
18
18
|
|
19
|
-
s.rdoc_options = [
|
19
|
+
s.rdoc_options = ['--charset=UTF-8', '--markup tomdoc']
|
20
20
|
s.extra_rdoc_files = %w[README.md MIT-LICENSE]
|
21
21
|
|
22
|
-
s.add_dependency(
|
23
|
-
s.add_dependency(
|
22
|
+
s.add_dependency('json')
|
23
|
+
s.add_dependency('activesupport')
|
24
24
|
|
25
|
-
s.add_development_dependency(
|
26
|
-
s.add_development_dependency(
|
27
|
-
s.add_development_dependency(
|
28
|
-
s.add_development_dependency(
|
29
|
-
s.add_development_dependency(
|
30
|
-
s.add_development_dependency(
|
31
|
-
s.add_development_dependency(
|
32
|
-
s.add_development_dependency(
|
33
|
-
s.add_development_dependency(
|
34
|
-
s.add_development_dependency(
|
25
|
+
s.add_development_dependency('cucumber', '~> 1.2.1')
|
26
|
+
s.add_development_dependency('rspec', '~> 2.12.0')
|
27
|
+
s.add_development_dependency('fakeweb', '~> 1.3.0')
|
28
|
+
s.add_development_dependency('sham_rack', '~> 1.3.0')
|
29
|
+
s.add_development_dependency('bourne', '>= 1.0')
|
30
|
+
s.add_development_dependency('shoulda', '~> 2.11.3')
|
31
|
+
s.add_development_dependency('capistrano')
|
32
|
+
s.add_development_dependency('rake')
|
33
|
+
s.add_development_dependency('sinatra')
|
34
|
+
s.add_development_dependency('aruba')
|
35
|
+
s.add_development_dependency('appraisal')
|
35
36
|
|
36
37
|
## Leave this section as-is. It will be automatically generated from the
|
37
38
|
## contents of your Git repository via the gemspec task. DO NOT REMOVE
|
38
39
|
## THE MANIFEST COMMENTS, they are used as delimiters by the task.
|
39
40
|
# = MANIFEST =
|
40
41
|
s.files = %w[
|
42
|
+
Appraisals
|
41
43
|
Gemfile
|
42
44
|
Gemfile.lock
|
43
45
|
Guardfile
|
44
46
|
MIT-LICENSE
|
45
47
|
README.md
|
46
48
|
Rakefile
|
47
|
-
SUPPORTED_RAILS_VERSIONS
|
48
|
-
TESTING.md
|
49
49
|
features/metal.feature
|
50
50
|
features/rack.feature
|
51
51
|
features/rails.feature
|
52
52
|
features/rake.feature
|
53
53
|
features/sinatra.feature
|
54
|
-
features/step_definitions/file_steps.rb
|
55
54
|
features/step_definitions/metal_steps.rb
|
56
55
|
features/step_definitions/rack_steps.rb
|
57
|
-
features/step_definitions/
|
56
|
+
features/step_definitions/rails_steps.rb
|
58
57
|
features/step_definitions/rake_steps.rb
|
59
58
|
features/support/env.rb
|
60
59
|
features/support/honeybadger_shim.rb.template
|
61
60
|
features/support/rails.rb
|
62
61
|
features/support/rake/Rakefile
|
63
|
-
|
62
|
+
gemfiles/rails2.3.gemfile
|
63
|
+
gemfiles/rails2.3.gemfile.lock
|
64
|
+
gemfiles/rails3.0.gemfile
|
65
|
+
gemfiles/rails3.0.gemfile.lock
|
66
|
+
gemfiles/rails3.1.gemfile
|
67
|
+
gemfiles/rails3.1.gemfile.lock
|
68
|
+
gemfiles/rails3.2.gemfile
|
69
|
+
gemfiles/rails3.2.gemfile.lock
|
64
70
|
generators/honeybadger/honeybadger_generator.rb
|
65
71
|
generators/honeybadger/lib/insert_commands.rb
|
66
72
|
generators/honeybadger/lib/rake_commands.rb
|
data/lib/honeybadger.rb
CHANGED
@@ -19,7 +19,7 @@ require 'honeybadger/sender'
|
|
19
19
|
require 'honeybadger/railtie' if defined?(Rails::Railtie)
|
20
20
|
|
21
21
|
module Honeybadger
|
22
|
-
VERSION = '1.
|
22
|
+
VERSION = '1.4.0'
|
23
23
|
LOG_PREFIX = "** [Honeybadger] "
|
24
24
|
|
25
25
|
HEADERS = {
|
@@ -35,139 +35,143 @@ module Honeybadger
|
|
35
35
|
# A Honeybadger configuration object. Must act like a hash and return sensible
|
36
36
|
# values for all Honeybadger configuration options. See Honeybadger::Configuration.
|
37
37
|
attr_writer :configuration
|
38
|
-
end
|
39
38
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
39
|
+
# Tell the log that the Notifier is good to go
|
40
|
+
def report_ready
|
41
|
+
write_verbose_log("Notifier #{VERSION} ready to catch errors")
|
42
|
+
end
|
44
43
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
# Prints out the environment info to the log for debugging help
|
45
|
+
def report_environment_info
|
46
|
+
write_verbose_log("Environment Info: #{environment_info}")
|
47
|
+
end
|
49
48
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
49
|
+
# Prints out the response body from Honeybadger for debugging help
|
50
|
+
def report_response_body(response)
|
51
|
+
write_verbose_log("Response from Honeybadger: \n#{response}")
|
52
|
+
end
|
54
53
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
54
|
+
# Returns the Ruby version, Rails version, and current Rails environment
|
55
|
+
def environment_info
|
56
|
+
info = "[Ruby: #{RUBY_VERSION}]"
|
57
|
+
info << " [#{configuration.framework}]" if configuration.framework
|
58
|
+
info << " [Env: #{configuration.environment_name}]" if configuration.environment_name
|
59
|
+
end
|
61
60
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
61
|
+
# Writes out the given message to the #logger
|
62
|
+
def write_verbose_log(message)
|
63
|
+
logger.info LOG_PREFIX + message if logger
|
64
|
+
end
|
66
65
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
66
|
+
# Look for the Rails logger currently defined
|
67
|
+
def logger
|
68
|
+
self.configuration.logger
|
69
|
+
end
|
71
70
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
71
|
+
# Public: Call this method to modify defaults in your initializers.
|
72
|
+
#
|
73
|
+
# Examples:
|
74
|
+
#
|
75
|
+
# Honeybadger.configure do |config|
|
76
|
+
# config.api_key = '1234567890abcdef'
|
77
|
+
# config.secure = false
|
78
|
+
# end
|
79
|
+
#
|
80
|
+
# Yields Honeybadger configuration
|
81
|
+
def configure(silent = false)
|
82
|
+
yield(configuration)
|
83
|
+
self.sender = Sender.new(configuration)
|
84
|
+
report_ready unless silent
|
85
|
+
self.sender
|
86
|
+
end
|
88
87
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
88
|
+
# Public: The configuration object.
|
89
|
+
# See Honeybadger.configure
|
90
|
+
#
|
91
|
+
# Returns Honeybadger configuration
|
92
|
+
def configuration
|
93
|
+
@configuration ||= Configuration.new
|
94
|
+
end
|
96
95
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
96
|
+
# Public: Sends an exception manually using this method, even when you are not in a controller.
|
97
|
+
#
|
98
|
+
# exception - The exception you want to notify Honeybadger about.
|
99
|
+
# options - Data that will be sent to Honeybadger.
|
100
|
+
# :api_key - The API key for this project. The API key is a unique identifier
|
101
|
+
# that Honeybadger uses for identification.
|
102
|
+
# :error_message - The error returned by the exception (or the message you want to log).
|
103
|
+
# :backtrace - A backtrace, usually obtained with +caller+.
|
104
|
+
# :rack_env - The Rack environment.
|
105
|
+
# :session - The contents of the user's session.
|
106
|
+
# :environment_name - The application environment name.
|
107
|
+
# :context - Custom hash to send
|
108
|
+
#
|
109
|
+
# Returns exception ID from Honeybadger on success, false on failure
|
110
|
+
def notify(exception, options = {})
|
111
|
+
send_notice(build_notice_for(exception, options))
|
112
|
+
end
|
114
113
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
114
|
+
# Public: Sends the notice unless it is one of the default ignored exceptions
|
115
|
+
# see Honeybadger.notify
|
116
|
+
def notify_or_ignore(exception, opts = {})
|
117
|
+
notice = build_notice_for(exception, opts)
|
118
|
+
send_notice(notice) unless notice.ignore?
|
119
|
+
end
|
121
120
|
|
122
|
-
|
123
|
-
|
121
|
+
def build_lookup_hash_for(exception, options = {})
|
122
|
+
notice = build_notice_for(exception, options)
|
124
123
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
124
|
+
result = {}
|
125
|
+
result[:action] = notice.action rescue nil
|
126
|
+
result[:component] = notice.component rescue nil
|
127
|
+
result[:error_class] = notice.error_class if notice.error_class
|
128
|
+
result[:environment_name] = 'production'
|
130
129
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
130
|
+
unless notice.backtrace.lines.empty?
|
131
|
+
result[:file] = notice.backtrace.lines.first.file
|
132
|
+
result[:line_number] = notice.backtrace.lines.first.number
|
133
|
+
end
|
135
134
|
|
136
|
-
|
137
|
-
|
135
|
+
result
|
136
|
+
end
|
138
137
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
138
|
+
def context(hash = {})
|
139
|
+
Thread.current[:honeybadger_context] ||= {}
|
140
|
+
Thread.current[:honeybadger_context].merge!(hash)
|
141
|
+
self
|
142
|
+
end
|
144
143
|
|
145
|
-
|
146
|
-
|
147
|
-
|
144
|
+
def clear!
|
145
|
+
Thread.current[:honeybadger_context] = nil
|
146
|
+
end
|
148
147
|
|
149
|
-
|
148
|
+
private
|
150
149
|
|
151
|
-
|
152
|
-
|
153
|
-
|
150
|
+
def send_notice(notice)
|
151
|
+
if configuration.public?
|
152
|
+
if configuration.async?
|
153
|
+
configuration.async.call(notice)
|
154
|
+
else
|
155
|
+
notice.deliver
|
156
|
+
end
|
157
|
+
end
|
154
158
|
end
|
155
|
-
end
|
156
159
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
160
|
+
def build_notice_for(exception, opts = {})
|
161
|
+
exception = unwrap_exception(exception)
|
162
|
+
opts = opts.merge(:exception => exception) if exception.is_a?(Exception)
|
163
|
+
opts = opts.merge(exception.to_hash) if exception.respond_to?(:to_hash)
|
164
|
+
Notice.new(configuration.merge(opts))
|
165
|
+
end
|
163
166
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
167
|
+
def unwrap_exception(exception)
|
168
|
+
if exception.respond_to?(:original_exception)
|
169
|
+
exception.original_exception
|
170
|
+
elsif exception.respond_to?(:continued_exception)
|
171
|
+
exception.continued_exception
|
172
|
+
else
|
173
|
+
exception
|
174
|
+
end
|
171
175
|
end
|
172
176
|
end
|
173
177
|
end
|