honeybadger 1.11.2 → 1.12.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Appraisals +56 -46
- data/CHANGELOG.md +33 -0
- data/Gemfile.lock +1 -1
- data/MIT-LICENSE +2 -1
- data/Rakefile +3 -1
- data/features/standalone.feature +73 -0
- data/features/step_definitions/rack_steps.rb +1 -2
- data/features/step_definitions/standalone_steps.rb +12 -0
- data/features/support/env.rb +2 -0
- data/gemfiles/binding_of_caller.gemfile +8 -0
- data/gemfiles/rails.gemfile +11 -0
- data/gemfiles/standalone.gemfile +7 -0
- data/honeybadger.gemspec +22 -11
- data/lib/honeybadger.rb +15 -9
- data/lib/honeybadger/configuration.rb +9 -4
- data/lib/honeybadger/dependency.rb +65 -0
- data/lib/honeybadger/exception_extensions.rb +35 -0
- data/lib/honeybadger/integrations.rb +4 -0
- data/lib/honeybadger/integrations/delayed_job.rb +20 -0
- data/lib/honeybadger/integrations/delayed_job/plugin.rb +31 -0
- data/lib/honeybadger/integrations/sidekiq.rb +34 -0
- data/lib/honeybadger/notice.rb +48 -11
- data/lib/honeybadger/payload.rb +29 -0
- data/lib/honeybadger/rack.rb +8 -54
- data/lib/honeybadger/rack/error_notifier.rb +60 -0
- data/lib/honeybadger/rack/user_feedback.rb +74 -0
- data/lib/honeybadger/rack/user_informer.rb +28 -0
- data/lib/honeybadger/rails.rb +5 -4
- data/lib/honeybadger/railtie.rb +4 -3
- data/lib/honeybadger/user_feedback.rb +3 -67
- data/lib/honeybadger/user_informer.rb +3 -21
- data/spec/honeybadger/configuration_spec.rb +5 -1
- data/spec/honeybadger/dependency_spec.rb +134 -0
- data/spec/honeybadger/exception_extensions_spec.rb +40 -0
- data/spec/honeybadger/integrations/delayed_job_spec.rb +48 -0
- data/spec/honeybadger/integrations/sidekiq_spec.rb +60 -0
- data/spec/honeybadger/notice_spec.rb +176 -35
- data/spec/honeybadger/payload_spec.rb +27 -0
- data/spec/honeybadger/rails_spec.rb +4 -2
- metadata +24 -13
- data/gemfiles/rack.gemfile.lock +0 -125
- data/gemfiles/rails2.3.gemfile.lock +0 -141
- data/gemfiles/rails3.0.gemfile.lock +0 -193
- data/gemfiles/rails3.1.gemfile.lock +0 -203
- data/gemfiles/rails3.2.gemfile.lock +0 -201
- data/gemfiles/rails4.0.gemfile.lock +0 -197
- data/gemfiles/rails4.1.gemfile.lock +0 -202
- data/gemfiles/rake.gemfile.lock +0 -124
- data/gemfiles/sinatra.gemfile.lock +0 -124
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Exception, :unless => defined?(BindingOfCaller) do
|
4
|
+
should { respond_to :__honeybadger_bindings_stack }
|
5
|
+
its(:__honeybadger_bindings_stack) { should eq([]) }
|
6
|
+
end
|
7
|
+
|
8
|
+
describe Exception, :if => defined?(BindingOfCaller) do
|
9
|
+
describe "#set_backtrace" do
|
10
|
+
context "call stack does not match current file" do
|
11
|
+
it "changes the bindings stack" do
|
12
|
+
expect { subject.set_backtrace(['foo.rb:1']) }.to change(subject, :__honeybadger_bindings_stack).from([])
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "call stack includes current file" do
|
17
|
+
before do
|
18
|
+
subject.stub(:caller).and_return(["#{File.expand_path('../../../lib/honeybadger/exception_extensions.rb', __FILE__)}:1"])
|
19
|
+
end
|
20
|
+
|
21
|
+
it "does not change the bindings stack" do
|
22
|
+
expect { subject.set_backtrace(['foo.rb:1']) }.not_to change(subject, :__honeybadger_bindings_stack).from([])
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "call stack includes a non-matching line" do
|
27
|
+
before do
|
28
|
+
subject.stub(:caller).and_return(['(foo)'])
|
29
|
+
end
|
30
|
+
|
31
|
+
it "skips the non-matching line" do
|
32
|
+
expect { subject.set_backtrace(['foo.rb:1']) }.not_to raise_error
|
33
|
+
end
|
34
|
+
|
35
|
+
it "changes the bindings stack" do
|
36
|
+
expect { subject.set_backtrace(['foo.rb:1']) }.to change(subject, :__honeybadger_bindings_stack).from([])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "DelayedJob Dependency" do
|
4
|
+
before do
|
5
|
+
Honeybadger::Dependency.reset!
|
6
|
+
end
|
7
|
+
|
8
|
+
context "when delayed_job 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 delayed_job is installed" do
|
15
|
+
let(:plugins_array) { [] }
|
16
|
+
let(:plugin_class) do
|
17
|
+
Class.new do
|
18
|
+
def self.callbacks(&block)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
before do
|
24
|
+
Object.const_set(:Delayed, Module.new)
|
25
|
+
::Delayed.const_set(:Plugins, Module.new)
|
26
|
+
::Delayed::Plugins.const_set(:Plugin, plugin_class)
|
27
|
+
::Delayed.const_set(:Worker, double(:plugins => plugins_array))
|
28
|
+
end
|
29
|
+
|
30
|
+
after { Object.send(:remove_const, :Delayed) }
|
31
|
+
|
32
|
+
it "adds the plugin to DelayedJob" do
|
33
|
+
Honeybadger::Dependency.inject!
|
34
|
+
expect(plugins_array).to include(Honeybadger::Integrations::DelayedJob::Plugin)
|
35
|
+
end
|
36
|
+
|
37
|
+
context "and delayed_job_honeybadger is installed" do
|
38
|
+
before do
|
39
|
+
::Delayed::Plugins.const_set(:Honeybadger, Class.new(plugin_class))
|
40
|
+
end
|
41
|
+
|
42
|
+
it "warns the user of the conflict" do
|
43
|
+
Honeybadger.should_receive(:write_verbose_log).with(/Support for Delayed Job has been moved/, :warn).once
|
44
|
+
Honeybadger::Dependency.inject!
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Sidekiq Dependency" do
|
4
|
+
before do
|
5
|
+
Honeybadger::Dependency.reset!
|
6
|
+
end
|
7
|
+
|
8
|
+
context "when sidekiq 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 sidekiq is installed" do
|
15
|
+
let(:shim) do
|
16
|
+
Class.new do
|
17
|
+
def self.configure_server
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
let(:config) { double('config', :error_handlers => []) }
|
23
|
+
let(:chain) { double('chain', :add => true) }
|
24
|
+
|
25
|
+
before do
|
26
|
+
Object.const_set(:Sidekiq, shim)
|
27
|
+
::Sidekiq.stub(:configure_server).and_yield(config)
|
28
|
+
config.stub(:server_middleware).and_yield(chain)
|
29
|
+
end
|
30
|
+
|
31
|
+
after { Object.send(:remove_const, :Sidekiq) }
|
32
|
+
|
33
|
+
context "when version is less than 3" do
|
34
|
+
before do
|
35
|
+
::Sidekiq.const_set(:VERSION, '2.17.7')
|
36
|
+
end
|
37
|
+
|
38
|
+
it "adds the server middleware" do
|
39
|
+
chain.should_receive(:add).with(Honeybadger::Integrations::Sidekiq::Middleware)
|
40
|
+
Honeybadger::Dependency.inject!
|
41
|
+
end
|
42
|
+
|
43
|
+
it "doesn't add the error handler" do
|
44
|
+
Honeybadger::Dependency.inject!
|
45
|
+
expect(config.error_handlers).to be_empty
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "when version is 3 or greater" do
|
50
|
+
before do
|
51
|
+
::Sidekiq.const_set(:VERSION, '3.0.0')
|
52
|
+
end
|
53
|
+
|
54
|
+
it "adds the error handler" do
|
55
|
+
Honeybadger::Dependency.inject!
|
56
|
+
expect(config.error_handlers).not_to be_empty
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -76,6 +76,17 @@ describe Honeybadger::Notice do
|
|
76
76
|
expect(notice.url).to eq url
|
77
77
|
end
|
78
78
|
|
79
|
+
it "initializes default features" do
|
80
|
+
notice = build_notice(:features => nil)
|
81
|
+
expect(notice.features).to eq({})
|
82
|
+
end
|
83
|
+
|
84
|
+
it "accepts features" do
|
85
|
+
features = {'foo' => 'bar'}
|
86
|
+
notice = build_notice(:features => features)
|
87
|
+
expect(notice.features).to eq features
|
88
|
+
end
|
89
|
+
|
79
90
|
it "sets the host name" do
|
80
91
|
notice = build_notice
|
81
92
|
expect(notice.hostname).to eq hostname
|
@@ -501,53 +512,74 @@ describe Honeybadger::Notice do
|
|
501
512
|
expect { build_notice(:session => { :object => double(:to_ary => {}) }) }.not_to raise_error
|
502
513
|
end
|
503
514
|
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
515
|
+
context "with a rack environment hash" do
|
516
|
+
it "extracts data from a rack environment hash" do
|
517
|
+
url = "https://subdomain.happylane.com:100/test/file.rb?var=value&var2=value2"
|
518
|
+
parameters = { 'var' => 'value', 'var2' => 'value2' }
|
519
|
+
env = Rack::MockRequest.env_for(url)
|
508
520
|
|
509
|
-
|
521
|
+
notice = build_notice(:rack_env => env)
|
510
522
|
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
523
|
+
expect(notice.url).to eq url
|
524
|
+
expect(notice.parameters).to eq parameters
|
525
|
+
expect(notice.cgi_data['REQUEST_METHOD']).to eq 'GET'
|
526
|
+
end
|
515
527
|
|
516
|
-
|
517
|
-
|
518
|
-
env = Rack::MockRequest.env_for('/', { 'action_dispatch.request.parameters' => params })
|
528
|
+
context "with action_dispatch info" do
|
529
|
+
let(:params) { {'controller' => 'users', 'action' => 'index', 'id' => '7'} }
|
519
530
|
|
520
|
-
|
531
|
+
it "extracts data from a rack environment hash " do
|
532
|
+
env = Rack::MockRequest.env_for('/', { 'action_dispatch.request.parameters' => params })
|
533
|
+
notice = build_notice(:rack_env => env)
|
521
534
|
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
535
|
+
expect(notice.parameters).to eq params
|
536
|
+
expect(notice.component).to eq params['controller']
|
537
|
+
expect(notice.action).to eq params['action']
|
538
|
+
end
|
539
|
+
|
540
|
+
it "removes action_dispatch.request.parameters from cgi_data" do
|
541
|
+
env = Rack::MockRequest.env_for('/', { 'action_dispatch.request.parameters' => params })
|
542
|
+
notice = build_notice(:rack_env => env)
|
543
|
+
expect(notice[:cgi_data]).not_to have_key 'action_dispatch.request.parameters'
|
544
|
+
end
|
526
545
|
|
527
|
-
|
528
|
-
|
529
|
-
|
546
|
+
it "removes action_dispatch.request.request_parameters from cgi_data" do
|
547
|
+
env = Rack::MockRequest.env_for('/', { 'action_dispatch.request.request_parameters' => params })
|
548
|
+
notice = build_notice(:rack_env => env)
|
549
|
+
expect(notice[:cgi_data]).not_to have_key 'action_dispatch.request.request_parameters'
|
550
|
+
end
|
551
|
+
end
|
530
552
|
|
531
|
-
|
553
|
+
it "extracts session data from a rack environment" do
|
554
|
+
session_data = { 'something' => 'some value' }
|
555
|
+
env = Rack::MockRequest.env_for('/', 'rack.session' => session_data)
|
532
556
|
|
533
|
-
|
534
|
-
end
|
557
|
+
notice = build_notice(:rack_env => env)
|
535
558
|
|
536
|
-
|
537
|
-
|
538
|
-
env = Rack::MockRequest.env_for('/')
|
559
|
+
expect(notice.session_data).to eq session_data
|
560
|
+
end
|
539
561
|
|
540
|
-
|
562
|
+
it "prefers passed session data to rack session data" do
|
563
|
+
session_data = { 'something' => 'some value' }
|
564
|
+
env = Rack::MockRequest.env_for('/')
|
541
565
|
|
542
|
-
|
543
|
-
end
|
566
|
+
notice = build_notice(:rack_env => env, :session_data => session_data)
|
544
567
|
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
568
|
+
expect(notice.session_data).to eq session_data
|
569
|
+
end
|
570
|
+
|
571
|
+
if Gem::Version.new(Rack.release) < Gem::Version.new('1.3')
|
572
|
+
it "parses params which are malformed in Rack >= 1.3" do
|
573
|
+
rack_env = Rack::MockRequest.env_for('http://www.example.com/explode', :method => 'POST', :input => 'foo=bar&bar=baz%')
|
574
|
+
expect { Honeybadger::Notice.new(:rack_env => rack_env) }.not_to raise_error
|
575
|
+
end
|
576
|
+
else
|
577
|
+
it "fails gracefully when Rack params cannot be parsed" do
|
578
|
+
rack_env = Rack::MockRequest.env_for('http://www.example.com/explode', :method => 'POST', :input => 'foo=bar&bar=baz%')
|
579
|
+
notice = Honeybadger::Notice.new(:rack_env => rack_env)
|
580
|
+
expect(notice.params.size).to eq 1
|
581
|
+
expect(notice.params[:error]).to match(/Failed to call params on Rack::Request/)
|
582
|
+
end
|
551
583
|
end
|
552
584
|
end
|
553
585
|
|
@@ -578,6 +610,115 @@ describe Honeybadger::Notice do
|
|
578
610
|
expect(notice.error_message).to eq 'Something very specific went wrong.'
|
579
611
|
end
|
580
612
|
|
613
|
+
describe "#to_json" do
|
614
|
+
context "when local variables are not found" do
|
615
|
+
it "sends local_variables in request payload" do
|
616
|
+
notice = build_notice
|
617
|
+
hash = {'foo' => 'bar'}
|
618
|
+
notice.stub(:local_variables).and_return(hash)
|
619
|
+
expect(JSON.parse(notice.to_json)['request']['local_variables']).to eq(hash)
|
620
|
+
end
|
621
|
+
end
|
622
|
+
|
623
|
+
context "when local variables are found" do
|
624
|
+
it "sends local_variables in request payload" do
|
625
|
+
notice = build_notice
|
626
|
+
expect(JSON.parse(notice.to_json)['request']['local_variables']).to eq({})
|
627
|
+
end
|
628
|
+
end
|
629
|
+
end
|
630
|
+
|
631
|
+
describe "#local_variables" do
|
632
|
+
let(:notice) { build_notice(:exception => @exception, :configuration => configuration) }
|
633
|
+
let(:configuration) { configure }
|
634
|
+
|
635
|
+
before do
|
636
|
+
foo = 'bar'
|
637
|
+
begin
|
638
|
+
fail 'oops'
|
639
|
+
rescue
|
640
|
+
@exception = $!
|
641
|
+
end
|
642
|
+
end
|
643
|
+
|
644
|
+
context "when binding_of_caller is not installed", :unless => defined?(BindingOfCaller) do
|
645
|
+
context "when local variables aren't enabled" do
|
646
|
+
it "does not attempt to find them" do
|
647
|
+
expect(notice.local_variables).to eq({})
|
648
|
+
end
|
649
|
+
end
|
650
|
+
|
651
|
+
context "when local variables are enabled" do
|
652
|
+
before do
|
653
|
+
configuration.send_local_variables = true
|
654
|
+
end
|
655
|
+
|
656
|
+
it "does not attempt to find them" do
|
657
|
+
expect(notice.local_variables).to eq({})
|
658
|
+
end
|
659
|
+
end
|
660
|
+
end
|
661
|
+
|
662
|
+
context "when binding_of_caller is installed", :if => defined?(BindingOfCaller) do
|
663
|
+
context "when local variables aren't enabled" do
|
664
|
+
it "does not attempt to find them" do
|
665
|
+
expect(notice.local_variables).to eq({})
|
666
|
+
end
|
667
|
+
end
|
668
|
+
|
669
|
+
context "when local variables are enabled" do
|
670
|
+
before do
|
671
|
+
configuration.send_local_variables = true
|
672
|
+
end
|
673
|
+
|
674
|
+
it "finds the local variables from first frame of trace" do
|
675
|
+
expect(notice.local_variables[:foo]).to eq 'bar'
|
676
|
+
end
|
677
|
+
|
678
|
+
context "when the feature is disabled" do
|
679
|
+
before do
|
680
|
+
configuration.features['local_variables'] = false
|
681
|
+
end
|
682
|
+
|
683
|
+
it "assigns empty Hash" do
|
684
|
+
expect(notice.local_variables).to eq({})
|
685
|
+
end
|
686
|
+
end
|
687
|
+
|
688
|
+
context "with an application trace" do
|
689
|
+
before do
|
690
|
+
@exception.__honeybadger_bindings_stack.unshift(double('Binding', :eval => nil))
|
691
|
+
configuration.project_root = File.dirname(__FILE__)
|
692
|
+
end
|
693
|
+
|
694
|
+
it "finds the local variables from first frame of application trace" do
|
695
|
+
expect(notice.local_variables[:foo]).to eq 'bar'
|
696
|
+
end
|
697
|
+
|
698
|
+
context "and project_root is a Pathname" do
|
699
|
+
before do
|
700
|
+
configuration.project_root = Pathname.new(File.dirname(__FILE__))
|
701
|
+
end
|
702
|
+
|
703
|
+
specify { expect { notice }.not_to raise_error }
|
704
|
+
end
|
705
|
+
end
|
706
|
+
|
707
|
+
context "without an exception" do
|
708
|
+
it "assigns empty Hash" do
|
709
|
+
expect(build_notice(:exception => nil).local_variables).to eq({})
|
710
|
+
end
|
711
|
+
end
|
712
|
+
|
713
|
+
context "without bindings" do
|
714
|
+
it "assigns empty Hash" do
|
715
|
+
expect(build_notice(:exception => RuntimeError.new).local_variables).to eq({})
|
716
|
+
end
|
717
|
+
end
|
718
|
+
end
|
719
|
+
end
|
720
|
+
end
|
721
|
+
|
581
722
|
def assert_accepts_exception_attribute(attribute, args = {}, &block)
|
582
723
|
exception = build_exception
|
583
724
|
block ||= lambda { exception.send(attribute) }
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Honeybadger::Payload do
|
4
|
+
its(:max_depth) { should eq 20 }
|
5
|
+
|
6
|
+
context "when max_depth option is passed to #initialize" do
|
7
|
+
subject { described_class.new({}, :max_depth => 5) }
|
8
|
+
its(:max_depth) { should eq 5 }
|
9
|
+
|
10
|
+
context "when initialized with a bad object" do
|
11
|
+
it "raises ArgumentError" do
|
12
|
+
expect { described_class.new([], :max_depth => 5) }.to raise_error(ArgumentError)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#sanitize" do
|
18
|
+
let(:deep_hash) { {}.tap {|h| 30.times.each {|i| h = h[i.to_s] = {:string => 'string'} }} }
|
19
|
+
let(:expected_hash) { {}.tap {|h| max_depth.times.each {|i| h = h[i.to_s] = {:string => 'string'} }} }
|
20
|
+
let(:sanitized_hash) { described_class.new(deep_hash, :max_depth => max_depth) }
|
21
|
+
let(:max_depth) { 10 }
|
22
|
+
|
23
|
+
it "truncates nested hashes to max_depth" do
|
24
|
+
expect(sanitized_hash).to eq(expected_hash)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'honeybadger/rails'
|
3
2
|
|
4
|
-
|
3
|
+
# This test should be run only when Rails is not bundled
|
4
|
+
require 'honeybadger/rails' unless defined?(ActionController::Base)
|
5
|
+
|
6
|
+
describe 'Honeybadger::Rails', :unless => defined?(ActionController::Base) do
|
5
7
|
include DefinesConstants
|
6
8
|
|
7
9
|
it "triggers use of Rails' logger if logger isn't set and Rails' logger exists" do
|
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.
|
4
|
+
version: 1.12.0.beta2
|
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-
|
11
|
+
date: 2014-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -227,33 +227,29 @@ files:
|
|
227
227
|
- features/rails.feature
|
228
228
|
- features/rake.feature
|
229
229
|
- features/sinatra.feature
|
230
|
+
- features/standalone.feature
|
230
231
|
- features/step_definitions/metal_steps.rb
|
231
232
|
- features/step_definitions/rack_steps.rb
|
232
233
|
- features/step_definitions/rails_steps.rb
|
233
234
|
- features/step_definitions/rake_steps.rb
|
235
|
+
- features/step_definitions/standalone_steps.rb
|
234
236
|
- features/support/env.rb
|
235
237
|
- features/support/honeybadger_failure_shim.rb.template
|
236
238
|
- features/support/honeybadger_shim.rb.template
|
237
239
|
- features/support/rails.rb
|
238
240
|
- features/support/rake/Rakefile
|
241
|
+
- gemfiles/binding_of_caller.gemfile
|
239
242
|
- gemfiles/rack.gemfile
|
240
|
-
- gemfiles/
|
243
|
+
- gemfiles/rails.gemfile
|
241
244
|
- gemfiles/rails2.3.gemfile
|
242
|
-
- gemfiles/rails2.3.gemfile.lock
|
243
245
|
- gemfiles/rails3.0.gemfile
|
244
|
-
- gemfiles/rails3.0.gemfile.lock
|
245
246
|
- gemfiles/rails3.1.gemfile
|
246
|
-
- gemfiles/rails3.1.gemfile.lock
|
247
247
|
- gemfiles/rails3.2.gemfile
|
248
|
-
- gemfiles/rails3.2.gemfile.lock
|
249
248
|
- gemfiles/rails4.0.gemfile
|
250
|
-
- gemfiles/rails4.0.gemfile.lock
|
251
249
|
- gemfiles/rails4.1.gemfile
|
252
|
-
- gemfiles/rails4.1.gemfile.lock
|
253
250
|
- gemfiles/rake.gemfile
|
254
|
-
- gemfiles/rake.gemfile.lock
|
255
251
|
- gemfiles/sinatra.gemfile
|
256
|
-
- gemfiles/
|
252
|
+
- gemfiles/standalone.gemfile
|
257
253
|
- generators/honeybadger/honeybadger_generator.rb
|
258
254
|
- generators/honeybadger/lib/insert_commands.rb
|
259
255
|
- generators/honeybadger/lib/rake_commands.rb
|
@@ -268,12 +264,22 @@ files:
|
|
268
264
|
- lib/honeybadger/capistrano/legacy.rb
|
269
265
|
- lib/honeybadger/capistrano/tasks.rake
|
270
266
|
- lib/honeybadger/configuration.rb
|
267
|
+
- lib/honeybadger/dependency.rb
|
268
|
+
- lib/honeybadger/exception_extensions.rb
|
269
|
+
- lib/honeybadger/integrations.rb
|
270
|
+
- lib/honeybadger/integrations/delayed_job.rb
|
271
|
+
- lib/honeybadger/integrations/delayed_job/plugin.rb
|
272
|
+
- lib/honeybadger/integrations/sidekiq.rb
|
271
273
|
- lib/honeybadger/monitor.rb
|
272
274
|
- lib/honeybadger/monitor/railtie.rb
|
273
275
|
- lib/honeybadger/monitor/sender.rb
|
274
276
|
- lib/honeybadger/monitor/worker.rb
|
275
277
|
- lib/honeybadger/notice.rb
|
278
|
+
- lib/honeybadger/payload.rb
|
276
279
|
- lib/honeybadger/rack.rb
|
280
|
+
- lib/honeybadger/rack/error_notifier.rb
|
281
|
+
- lib/honeybadger/rack/user_feedback.rb
|
282
|
+
- lib/honeybadger/rack/user_informer.rb
|
277
283
|
- lib/honeybadger/rails.rb
|
278
284
|
- lib/honeybadger/rails/action_controller_catcher.rb
|
279
285
|
- lib/honeybadger/rails/controller_methods.rb
|
@@ -297,10 +303,15 @@ files:
|
|
297
303
|
- spec/honeybadger/backtrace_spec.rb
|
298
304
|
- spec/honeybadger/capistrano_spec.rb
|
299
305
|
- spec/honeybadger/configuration_spec.rb
|
306
|
+
- spec/honeybadger/dependency_spec.rb
|
307
|
+
- spec/honeybadger/exception_extensions_spec.rb
|
308
|
+
- spec/honeybadger/integrations/delayed_job_spec.rb
|
309
|
+
- spec/honeybadger/integrations/sidekiq_spec.rb
|
300
310
|
- spec/honeybadger/logger_spec.rb
|
301
311
|
- spec/honeybadger/monitor/worker_spec.rb
|
302
312
|
- spec/honeybadger/notice_spec.rb
|
303
313
|
- spec/honeybadger/notifier_spec.rb
|
314
|
+
- spec/honeybadger/payload_spec.rb
|
304
315
|
- spec/honeybadger/rack_spec.rb
|
305
316
|
- spec/honeybadger/rails/action_controller_spec.rb
|
306
317
|
- spec/honeybadger/rails_spec.rb
|
@@ -331,9 +342,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
331
342
|
version: '0'
|
332
343
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
333
344
|
requirements:
|
334
|
-
- - '
|
345
|
+
- - '>'
|
335
346
|
- !ruby/object:Gem::Version
|
336
|
-
version:
|
347
|
+
version: 1.3.1
|
337
348
|
requirements: []
|
338
349
|
rubyforge_project:
|
339
350
|
rubygems_version: 2.1.5
|