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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +56 -46
  3. data/CHANGELOG.md +33 -0
  4. data/Gemfile.lock +1 -1
  5. data/MIT-LICENSE +2 -1
  6. data/Rakefile +3 -1
  7. data/features/standalone.feature +73 -0
  8. data/features/step_definitions/rack_steps.rb +1 -2
  9. data/features/step_definitions/standalone_steps.rb +12 -0
  10. data/features/support/env.rb +2 -0
  11. data/gemfiles/binding_of_caller.gemfile +8 -0
  12. data/gemfiles/rails.gemfile +11 -0
  13. data/gemfiles/standalone.gemfile +7 -0
  14. data/honeybadger.gemspec +22 -11
  15. data/lib/honeybadger.rb +15 -9
  16. data/lib/honeybadger/configuration.rb +9 -4
  17. data/lib/honeybadger/dependency.rb +65 -0
  18. data/lib/honeybadger/exception_extensions.rb +35 -0
  19. data/lib/honeybadger/integrations.rb +4 -0
  20. data/lib/honeybadger/integrations/delayed_job.rb +20 -0
  21. data/lib/honeybadger/integrations/delayed_job/plugin.rb +31 -0
  22. data/lib/honeybadger/integrations/sidekiq.rb +34 -0
  23. data/lib/honeybadger/notice.rb +48 -11
  24. data/lib/honeybadger/payload.rb +29 -0
  25. data/lib/honeybadger/rack.rb +8 -54
  26. data/lib/honeybadger/rack/error_notifier.rb +60 -0
  27. data/lib/honeybadger/rack/user_feedback.rb +74 -0
  28. data/lib/honeybadger/rack/user_informer.rb +28 -0
  29. data/lib/honeybadger/rails.rb +5 -4
  30. data/lib/honeybadger/railtie.rb +4 -3
  31. data/lib/honeybadger/user_feedback.rb +3 -67
  32. data/lib/honeybadger/user_informer.rb +3 -21
  33. data/spec/honeybadger/configuration_spec.rb +5 -1
  34. data/spec/honeybadger/dependency_spec.rb +134 -0
  35. data/spec/honeybadger/exception_extensions_spec.rb +40 -0
  36. data/spec/honeybadger/integrations/delayed_job_spec.rb +48 -0
  37. data/spec/honeybadger/integrations/sidekiq_spec.rb +60 -0
  38. data/spec/honeybadger/notice_spec.rb +176 -35
  39. data/spec/honeybadger/payload_spec.rb +27 -0
  40. data/spec/honeybadger/rails_spec.rb +4 -2
  41. metadata +24 -13
  42. data/gemfiles/rack.gemfile.lock +0 -125
  43. data/gemfiles/rails2.3.gemfile.lock +0 -141
  44. data/gemfiles/rails3.0.gemfile.lock +0 -193
  45. data/gemfiles/rails3.1.gemfile.lock +0 -203
  46. data/gemfiles/rails3.2.gemfile.lock +0 -201
  47. data/gemfiles/rails4.0.gemfile.lock +0 -197
  48. data/gemfiles/rails4.1.gemfile.lock +0 -202
  49. data/gemfiles/rake.gemfile.lock +0 -124
  50. 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
- it "extracts data from a rack environment hash" do
505
- url = "https://subdomain.happylane.com:100/test/file.rb?var=value&var2=value2"
506
- parameters = { 'var' => 'value', 'var2' => 'value2' }
507
- env = Rack::MockRequest.env_for(url)
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
- notice = build_notice(:rack_env => env)
521
+ notice = build_notice(:rack_env => env)
510
522
 
511
- expect(notice.url).to eq url
512
- expect(notice.parameters).to eq parameters
513
- expect(notice.cgi_data['REQUEST_METHOD']).to eq 'GET'
514
- end
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
- it "extracts data from a rack environment hash with action_dispatch info" do
517
- params = { 'controller' => 'users', 'action' => 'index', 'id' => '7' }
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
- notice = build_notice(:rack_env => env)
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
- expect(notice.parameters).to eq params
523
- expect(notice.component).to eq params['controller']
524
- expect(notice.action).to eq params['action']
525
- end
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
- it "extracts session data from a rack environment" do
528
- session_data = { 'something' => 'some value' }
529
- env = Rack::MockRequest.env_for('/', 'rack.session' => session_data)
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
- notice = build_notice(:rack_env => env)
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
- expect(notice.session_data).to eq session_data
534
- end
557
+ notice = build_notice(:rack_env => env)
535
558
 
536
- it "prefers passed session data to rack session data" do
537
- session_data = { 'something' => 'some value' }
538
- env = Rack::MockRequest.env_for('/')
559
+ expect(notice.session_data).to eq session_data
560
+ end
539
561
 
540
- notice = build_notice(:rack_env => env, :session_data => session_data)
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
- expect(notice.session_data).to eq session_data
543
- end
566
+ notice = build_notice(:rack_env => env, :session_data => session_data)
544
567
 
545
- unless Gem::Version.new(Rack.release) < Gem::Version.new('1.2')
546
- it "fails gracefully when Rack params cannot be parsed" do
547
- rack_env = Rack::MockRequest.env_for('http://www.example.com/explode', :method => 'POST', :input => 'foo=bar&bar=baz%')
548
- notice = Honeybadger::Notice.new(:rack_env => rack_env)
549
- expect(notice.params.size).to eq 1
550
- expect(notice.params[:error]).to match(/Failed to call params on Rack::Request/)
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
- describe Honeybadger::Rails do
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.11.2
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-03-13 00:00:00.000000000 Z
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/rack.gemfile.lock
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/sinatra.gemfile.lock
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: '0'
347
+ version: 1.3.1
337
348
  requirements: []
338
349
  rubyforge_project:
339
350
  rubygems_version: 2.1.5