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.
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