honeybadger 1.15.2 → 1.15.3
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 +4 -4
- data/CHANGELOG.md +11 -1
- data/Gemfile.lock +1 -1
- data/honeybadger.gemspec +4 -2
- data/lib/honeybadger.rb +5 -4
- data/lib/honeybadger/integrations.rb +1 -0
- data/lib/honeybadger/integrations/delayed_job/plugin.rb +5 -1
- data/lib/honeybadger/integrations/passenger.rb +18 -0
- data/lib/honeybadger/integrations/sidekiq.rb +1 -0
- data/lib/honeybadger/monitor/worker.rb +26 -1
- data/spec/honeybadger/integrations/passenger_spec.rb +29 -0
- data/spec/honeybadger/monitor/worker_spec.rb +25 -0
- data/spec/honeybadger/sender_spec.rb +6 -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: 9cfe3439d58b7af28a565d2de4933b569739de24
|
4
|
+
data.tar.gz: bbce3f75341c717bb1509ef572e13d5383b7e156
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e26c85da0f200e09d0d89a19cef8d49d01bab91ef6a430257c4b39987636b29b927cdda9a1d15d880507383309b62b1b1ad01fa8a391620273db44542fb3a6b
|
7
|
+
data.tar.gz: 43a4170cc003e0c4f1191255734bb3437c632ce30c708b12b8031fcf323927d1fcdd6825d26bf49001acc5cc41a02545a52a3fc6313567e844fa55bd46cb0e3c
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,14 @@
|
|
1
|
-
## Honeybadger 1.15.
|
1
|
+
## Honeybadger 1.15.3 ##
|
2
|
+
|
3
|
+
* Send User-Agent header
|
4
|
+
|
5
|
+
*Joshua Wood*
|
6
|
+
|
7
|
+
* Fix a bug where metrics were not reported for Passenger processes.
|
8
|
+
|
9
|
+
*Joshua Wood*
|
10
|
+
|
11
|
+
## Honeybadger 1.15.2 ##
|
2
12
|
|
3
13
|
* Fix bug where honeybadger/monitor wasn't included in non-Rails apps, even
|
4
14
|
though certain other integrations depend on it.
|
data/Gemfile.lock
CHANGED
data/honeybadger.gemspec
CHANGED
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
|
|
4
4
|
s.rubygems_version = '1.3.5'
|
5
5
|
|
6
6
|
s.name = 'honeybadger'
|
7
|
-
s.version = '1.15.
|
8
|
-
s.date = '2014-06-
|
7
|
+
s.version = '1.15.3'
|
8
|
+
s.date = '2014-06-21'
|
9
9
|
|
10
10
|
s.summary = 'Error reports you can be happy about.'
|
11
11
|
s.description = 'Make managing application errors a more pleasant experience.'
|
@@ -100,6 +100,7 @@ Gem::Specification.new do |s|
|
|
100
100
|
lib/honeybadger/integrations/delayed_job.rb
|
101
101
|
lib/honeybadger/integrations/delayed_job/plugin.rb
|
102
102
|
lib/honeybadger/integrations/net_http.rb
|
103
|
+
lib/honeybadger/integrations/passenger.rb
|
103
104
|
lib/honeybadger/integrations/sidekiq.rb
|
104
105
|
lib/honeybadger/integrations/thor.rb
|
105
106
|
lib/honeybadger/monitor.rb
|
@@ -140,6 +141,7 @@ Gem::Specification.new do |s|
|
|
140
141
|
spec/honeybadger/exception_extensions_spec.rb
|
141
142
|
spec/honeybadger/integrations/delayed_job_spec.rb
|
142
143
|
spec/honeybadger/integrations/net_http_spec.rb
|
144
|
+
spec/honeybadger/integrations/passenger_spec.rb
|
143
145
|
spec/honeybadger/integrations/sidekiq_spec.rb
|
144
146
|
spec/honeybadger/integrations/thor_spec.rb
|
145
147
|
spec/honeybadger/logger_spec.rb
|
data/lib/honeybadger.rb
CHANGED
@@ -20,13 +20,14 @@ require 'honeybadger/railtie' if defined?(Rails::Railtie)
|
|
20
20
|
require 'honeybadger/monitor'
|
21
21
|
|
22
22
|
module Honeybadger
|
23
|
-
VERSION = '1.15.
|
24
|
-
LOG_PREFIX = "** [Honeybadger] "
|
23
|
+
VERSION = '1.15.3'.freeze
|
24
|
+
LOG_PREFIX = "** [Honeybadger] ".freeze
|
25
25
|
|
26
26
|
HEADERS = {
|
27
27
|
'Content-type' => 'application/json',
|
28
|
-
'Accept' => 'text/json, application/json'
|
29
|
-
|
28
|
+
'Accept' => 'text/json, application/json',
|
29
|
+
'User-Agent' => "HB-Ruby #{VERSION}; #{RUBY_VERSION}; #{RUBY_PLATFORM}"
|
30
|
+
}.freeze
|
30
31
|
|
31
32
|
class << self
|
32
33
|
# The sender object is responsible for delivering formatted data to the
|
@@ -5,7 +5,11 @@ module Honeybadger
|
|
5
5
|
callbacks do |lifecycle|
|
6
6
|
lifecycle.around(:invoke_job) do |job, &block|
|
7
7
|
begin
|
8
|
-
Honeybadger::Monitor
|
8
|
+
if defined?(::Honeybadger::Monitor)
|
9
|
+
::Honeybadger::Monitor::Trace.instrument("#{job.payload_object.class}#perform", { :source => 'delayed_job', :jid => job.id, :class => job.payload_object.class.name }) do
|
10
|
+
block.call(job)
|
11
|
+
end
|
12
|
+
else
|
9
13
|
block.call(job)
|
10
14
|
end
|
11
15
|
rescue Exception => error
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Honeybadger
|
2
|
+
Dependency.register do
|
3
|
+
requirement { defined?(::PhusionPassenger) }
|
4
|
+
requirement { defined?(::Honeybadger::Monitor) }
|
5
|
+
|
6
|
+
injection do
|
7
|
+
::PhusionPassenger.on_event(:starting_worker_process) do |forked|
|
8
|
+
Honeybadger.write_verbose_log('Starting passenger worker process')
|
9
|
+
Honeybadger::Monitor.worker.fork if forked
|
10
|
+
end
|
11
|
+
|
12
|
+
::PhusionPassenger.on_event(:stopping_worker_process) do
|
13
|
+
Honeybadger.write_verbose_log('Stopping passenger worker process')
|
14
|
+
Honeybadger::Monitor.worker.stop
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -21,6 +21,8 @@ module Honeybadger
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def start
|
24
|
+
Honeybadger.write_verbose_log('Starting worker')
|
25
|
+
|
24
26
|
@thread = MetricsThread.new do
|
25
27
|
begin
|
26
28
|
until Thread.current[:should_exit] do
|
@@ -36,9 +38,24 @@ module Honeybadger
|
|
36
38
|
end
|
37
39
|
|
38
40
|
def stop
|
41
|
+
Honeybadger.write_verbose_log('Stopping worker')
|
39
42
|
@thread[:should_exit] = true if @thread
|
40
43
|
end
|
41
44
|
|
45
|
+
def fork
|
46
|
+
Honeybadger.write_verbose_log('Forking worker')
|
47
|
+
|
48
|
+
stop
|
49
|
+
|
50
|
+
@lock.unlock if @lock.locked?
|
51
|
+
@lock.synchronize do
|
52
|
+
init_metrics
|
53
|
+
init_traces
|
54
|
+
end
|
55
|
+
|
56
|
+
start
|
57
|
+
end
|
58
|
+
|
42
59
|
def timing(name, value)
|
43
60
|
add_metric(name, value, :timing)
|
44
61
|
end
|
@@ -94,6 +111,9 @@ module Honeybadger
|
|
94
111
|
def send_metrics
|
95
112
|
metrics = collect_metrics
|
96
113
|
return unless metrics[:timing].any? || metrics[:counter].any?
|
114
|
+
|
115
|
+
Honeybadger.write_verbose_log('Sending metrics')
|
116
|
+
|
97
117
|
[].tap do |m|
|
98
118
|
metrics[:counter].each do |metric, values|
|
99
119
|
m << "#{metric} #{values.sum}"
|
@@ -117,7 +137,12 @@ module Honeybadger
|
|
117
137
|
end
|
118
138
|
|
119
139
|
def send_traces
|
120
|
-
|
140
|
+
traces = collect_traces
|
141
|
+
return unless traces.any?
|
142
|
+
|
143
|
+
Honeybadger.write_verbose_log('Sending traces')
|
144
|
+
|
145
|
+
traces.each_slice(@per_request) do |t|
|
121
146
|
begin
|
122
147
|
@sender.send_traces({ :traces => t.compact.map(&:to_h), :environment => Honeybadger.configuration.environment_name, :hostname => Honeybadger.configuration.hostname })
|
123
148
|
rescue Exception => e
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Passenger integration" do
|
4
|
+
before do
|
5
|
+
Honeybadger::Dependency.reset!
|
6
|
+
end
|
7
|
+
|
8
|
+
context "when passenger is not installed" do
|
9
|
+
it "fails quietly" do
|
10
|
+
expect { Honeybadger::Dependency.inject! }.not_to raise_error
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context "when passenger is installed" do
|
15
|
+
let(:shim) { double('PhusionPassenger') }
|
16
|
+
|
17
|
+
before do
|
18
|
+
Object.const_set(:PhusionPassenger, shim)
|
19
|
+
end
|
20
|
+
after { Object.send(:remove_const, :PhusionPassenger) }
|
21
|
+
|
22
|
+
it "installs passenger hooks" do
|
23
|
+
shim.should_receive(:on_event).with(:starting_worker_process)
|
24
|
+
shim.should_receive(:on_event).with(:stopping_worker_process)
|
25
|
+
Honeybadger::Dependency.inject!
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
@@ -12,6 +12,31 @@ describe Honeybadger::Monitor::Worker do
|
|
12
12
|
instance.stub(:metrics) { instance.instance_variable_get(:@metrics) }
|
13
13
|
instance.stub(:traces) { instance.instance_variable_get(:@traces) }
|
14
14
|
instance.stub(:sender) { instance.instance_variable_get(:@sender) }
|
15
|
+
instance.stub(:thread) { instance.instance_variable_get(:@thread) }
|
16
|
+
instance.stub(:lock) { instance.instance_variable_get(:@lock) }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#fork" do
|
20
|
+
before { Thread.unstub(:new) }
|
21
|
+
before { Honeybadger.stub(:write_verbose_log) }
|
22
|
+
before { subject.start }
|
23
|
+
after { subject.stop }
|
24
|
+
|
25
|
+
it "logs debug information" do
|
26
|
+
Honeybadger.should_receive(:write_verbose_log).with(/forking/i)
|
27
|
+
subject.fork
|
28
|
+
end
|
29
|
+
|
30
|
+
it "restarts the worker thread" do
|
31
|
+
old_thread = instance.thread
|
32
|
+
subject.fork
|
33
|
+
expect(instance.thread).not_to be old_thread
|
34
|
+
end
|
35
|
+
|
36
|
+
it "unlocks the mutex first" do
|
37
|
+
instance.lock.lock
|
38
|
+
expect { subject.fork }.not_to raise_error
|
39
|
+
end
|
15
40
|
end
|
16
41
|
|
17
42
|
describe '#initialize' do
|
@@ -9,6 +9,12 @@ describe Honeybadger::Sender do
|
|
9
9
|
Honeybadger.notify(RuntimeError.new('oops!'))
|
10
10
|
end
|
11
11
|
|
12
|
+
it "sends a user agent with version number" do
|
13
|
+
http = stub_http
|
14
|
+
http.should_receive(:post).with(kind_of(String), kind_of(String), hash_including({'User-Agent' => "HB-Ruby #{Honeybadger::VERSION}; #{RUBY_VERSION}; #{RUBY_PLATFORM}"}))
|
15
|
+
send_exception
|
16
|
+
end
|
17
|
+
|
12
18
|
it "posts to Honeybadger when using an HTTP proxy" do
|
13
19
|
http = stub_http
|
14
20
|
proxy = double(:new => http)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: honeybadger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.15.
|
4
|
+
version: 1.15.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joshua Wood
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -261,6 +261,7 @@ files:
|
|
261
261
|
- lib/honeybadger/integrations/delayed_job.rb
|
262
262
|
- lib/honeybadger/integrations/delayed_job/plugin.rb
|
263
263
|
- lib/honeybadger/integrations/net_http.rb
|
264
|
+
- lib/honeybadger/integrations/passenger.rb
|
264
265
|
- lib/honeybadger/integrations/sidekiq.rb
|
265
266
|
- lib/honeybadger/integrations/thor.rb
|
266
267
|
- lib/honeybadger/monitor.rb
|
@@ -301,6 +302,7 @@ files:
|
|
301
302
|
- spec/honeybadger/exception_extensions_spec.rb
|
302
303
|
- spec/honeybadger/integrations/delayed_job_spec.rb
|
303
304
|
- spec/honeybadger/integrations/net_http_spec.rb
|
305
|
+
- spec/honeybadger/integrations/passenger_spec.rb
|
304
306
|
- spec/honeybadger/integrations/sidekiq_spec.rb
|
305
307
|
- spec/honeybadger/integrations/thor_spec.rb
|
306
308
|
- spec/honeybadger/logger_spec.rb
|