honeybadger 1.11.2 → 1.12.0.beta2
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/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
|