honeybadger 1.15.2 → 1.15.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|