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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c98c97c988136ebe7a6d5580cdac9e1698529936
4
- data.tar.gz: 8a7b29f5551f81e70b9f5360f54ead77b76a6cad
3
+ metadata.gz: f13dbb0c4361cea34b1fe5d3f1a85432fc40a8b0
4
+ data.tar.gz: c7f4632eb5ee4bcfca17a9c81f96b7cd1c033f45
5
5
  SHA512:
6
- metadata.gz: ae2dbacf86e3cca976afe8d4171593e8e41cdcc25d5adbce36ca9986335ea95c294979456439bd1ec97d7633ae81b3b5943dad9b7d28489fd0c0a0a6fb6865c2
7
- data.tar.gz: d08709252872ac8469bd96071b5cb497c962273a5d0ce687842a02fac97c5f71f6ede80af09e5d028723dd181913ad91de7df974aea2d204b8d5088e9a8d9eea
6
+ metadata.gz: c3cdc55eb70ec84d95057d366c0813b28b58c300daf3df88226e82f5309aae8e0f4b1b3a37c1b3a07b32760e26aaac768f45d74976f755b99705ff6678d30633
7
+ data.tar.gz: 59ad35ef1d2d59acbc1ccb711109d96928b470508f2d3f581725959f18b1a160f296eb995e61736695e838a1c3f3b8c80a2bb368698f36fbd3b5e2249a883956
data/Appraisals CHANGED
@@ -1,67 +1,77 @@
1
- appraise 'rails2.3' do
2
- gem 'rails', '~> 2.3.18'
3
- gem 'rake', '0.9.5'
1
+ appraise 'standalone' do
4
2
  gem 'honeybadger', :path => '../'
5
- gem 'capistrano', '~> 2.0'
6
3
  end
7
4
 
8
- appraise 'rails3.0' do
9
- gem 'rails', '~> 3.0.17'
10
- gem 'honeybadger', :path => '../'
11
- gem 'better_errors', :require => false
12
- gem 'rack-mini-profiler', '~>0.1.31 ', :require => false
13
- gem 'capistrano', '~> 2.0'
5
+ if RUBY_VERSION > '1.9' && RUBY_PLATFORM !~ /java/
6
+ appraise 'binding_of_caller' do
7
+ gem 'binding_of_caller'
8
+ gem 'honeybadger', :path => '../'
9
+ end
14
10
  end
15
11
 
16
- appraise 'rails3.1' do
17
- gem 'rails', '~> 3.1.12'
12
+ appraise 'rake' do
13
+ gem 'sinatra'
18
14
  gem 'honeybadger', :path => '../'
19
- gem 'better_errors', :require => false
20
- gem 'rack-mini-profiler', :require => false
21
- gem 'capistrano', '~> 2.0'
22
15
  end
23
16
 
24
- appraise 'rails3.2' do
25
- gem 'rails', '~> 3.2.12'
17
+ appraise 'rack' do
18
+ gem 'rack'
26
19
  gem 'honeybadger', :path => '../'
27
- gem 'better_errors', :require => false
28
- gem 'rack-mini-profiler', :require => false
29
- gem 'capistrano', '~> 2.0'
30
20
  end
31
21
 
32
- appraise 'rails4.0' do
33
- gem 'rails', '~> 4.0.2'
22
+ appraise 'sinatra' do
23
+ gem 'sinatra'
34
24
  gem 'honeybadger', :path => '../'
35
- gem 'better_errors', :require => false
36
- gem 'rack-mini-profiler', :require => false
37
- gem 'capistrano', '~> 2.0'
38
25
  end
39
26
 
40
- appraise 'rails4.1' do
41
- gem 'rails', '~> 4.1.0.beta1'
27
+ appraise 'rails2.3' do
28
+ gem 'rails', '~> 2.3.18'
29
+ gem 'rake', '0.9.5'
42
30
  gem 'honeybadger', :path => '../'
43
- gem 'capistrano', '~> 3.0'
44
- gem 'better_errors', :require => false
45
- gem 'rack-mini-profiler', :require => false
31
+ gem 'capistrano', '~> 2.0'
46
32
  end
47
33
 
48
- # appraise 'rails-edge' do
49
- # gem 'rails', :git => 'git@github.com:rails/rails.git'
50
- # gem 'honeybadger', :path => '../'
51
- # gem 'capistrano', '~> 2.0'
52
- # end
34
+ if RUBY_VERSION > '1.9'
35
+ appraise 'rails3.0' do
36
+ gem 'rails', '~> 3.0.17'
37
+ gem 'honeybadger', :path => '../'
38
+ gem 'better_errors', :require => false
39
+ gem 'rack-mini-profiler', '~>0.1.31 ', :require => false
40
+ gem 'capistrano', '~> 2.0'
41
+ end
53
42
 
54
- appraise 'rake' do
55
- gem 'sinatra'
56
- gem 'honeybadger', :path => '../'
57
- end
43
+ appraise 'rails3.1' do
44
+ gem 'rails', '~> 3.1.12'
45
+ gem 'honeybadger', :path => '../'
46
+ gem 'better_errors', :require => false
47
+ gem 'rack-mini-profiler', :require => false
48
+ gem 'capistrano', '~> 2.0'
49
+ end
58
50
 
59
- appraise 'rack' do
60
- gem 'rack'
61
- gem 'honeybadger', :path => '../'
62
- end
51
+ appraise 'rails3.2' do
52
+ gem 'rails', '~> 3.2.12'
53
+ gem 'honeybadger', :path => '../'
54
+ gem 'better_errors', :require => false
55
+ gem 'rack-mini-profiler', :require => false
56
+ gem 'capistrano', '~> 2.0'
57
+ end
63
58
 
64
- appraise 'sinatra' do
65
- gem 'sinatra'
66
- gem 'honeybadger', :path => '../'
59
+ if RUBY_VERSION > '1.9.2'
60
+ # The latest officially supported Rails release
61
+ appraise 'rails' do
62
+ gem 'rails', '~> 4.0.3'
63
+ gem 'honeybadger', :path => '../'
64
+ gem 'capistrano', '~> 3.0'
65
+ gem 'better_errors', :require => false
66
+ gem 'rack-mini-profiler', :require => false
67
+ end
68
+
69
+ appraise 'rails4.1' do
70
+ gem 'rails', '~> 4.1.0.beta1'
71
+ gem 'honeybadger', :path => '../'
72
+ gem 'capistrano', '~> 3.0'
73
+ gem 'better_errors', :require => false
74
+ gem 'rack-mini-profiler', :require => false
75
+ end
76
+ end
67
77
  end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,36 @@
1
+ ## Honeybadger 1.12.0 (unreleased) ##
2
+
3
+ * Add option to send local_variables when binding_of_caller is
4
+ installed. In order to enable it, the gem must be present in the
5
+ project, and `config.send_local_variables` must be `true`.
6
+
7
+ *Joshua Wood*
8
+
9
+ * Create Honeybadger::Rack namespace and add deprecation warnings for
10
+ old middleware.
11
+
12
+ *Joshua Wood*
13
+
14
+ * Support ruby 2.1 with Exception#cause
15
+
16
+ *Ravil Bayramgalin*
17
+
18
+ * Clean action_dispatch.request.parameters from payload.
19
+
20
+ *Joshua Wood*
21
+
22
+ * Add support for 3rd-party integrations via dependency injection.
23
+
24
+ *Joshua Wood*
25
+
26
+ * Delayed Job support
27
+
28
+ *Joshua Wood*
29
+
30
+ * Add native support for Sidekiq
31
+
32
+ *Joshua Wood*
33
+
1
34
  ## Honeybadger 1.11.2 ##
2
35
 
3
36
  * Fix Bundler::RubyVersionMismatch error when invoking heroku command
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- honeybadger (1.11.2)
4
+ honeybadger (1.12.0.beta2)
5
5
  json
6
6
 
7
7
  GEM
data/MIT-LICENSE CHANGED
@@ -1,7 +1,8 @@
1
- Portions Copyright (c) 2012-2013, Honeybadger Industries LLC
1
+ Copyright (c) 2012-2013, Honeybadger Industries LLC
2
2
  Portions Copyright (c) 2012 Noah Lorang
3
3
  Portions Copyright (c) 2007-2012, Exceptional DBA Airbrake.io
4
4
  Portions Copyright (c) 2009 Brenton Fletcher (http://i.bloople.net i@bloople.net)
5
+ Portions Copyright (c) 2014 Charlie Somerville
5
6
 
6
7
  The original version of the Honeybadger gem was based on the
7
8
  MIT-licensed Airbrake gem. All code contained herein that is
data/Rakefile CHANGED
@@ -61,7 +61,7 @@ Cucumber::Rake::Task.new(:cucumber) do |t|
61
61
  t.fork = true
62
62
  t.cucumber_opts = ['--format', 'progress', '--tags', '~@pending']
63
63
 
64
- unless ENV['BUNDLE_GEMFILE'] =~ /rails(3|4)/
64
+ unless ENV['BUNDLE_GEMFILE'] =~ /rails[^2]/
65
65
  t.cucumber_opts << '--tags ~@rails_3'
66
66
  end
67
67
 
@@ -74,6 +74,8 @@ Cucumber::Rake::Task.new(:cucumber) do |t|
74
74
  t.cucumber_opts << 'features/rake.feature'
75
75
  when /sinatra/
76
76
  t.cucumber_opts << 'features/sinatra.feature'
77
+ else
78
+ t.cucumber_opts << 'features/standalone.feature'
77
79
  end unless ENV['FEATURE']
78
80
  end
79
81
 
@@ -0,0 +1,73 @@
1
+ Feature: Use the notifier in a plain Ruby app
2
+ Scenario: Rescue and exception in a Rack app
3
+ Given the following Ruby app:
4
+ """
5
+ require 'honeybadger'
6
+
7
+ Honeybadger.configure do |config|
8
+ config.api_key = 'my_api_key'
9
+ config.logger = Logger.new STDOUT
10
+ end
11
+
12
+ begin
13
+ fail 'oops!'
14
+ rescue => e
15
+ Honeybadger.notify(e)
16
+ end
17
+ """
18
+ When I execute the file
19
+ Then I should receive a Honeybadger notification
20
+
21
+ Scenario: Dependency injection
22
+ Given the following Ruby app:
23
+ """
24
+ require 'honeybadger/dependency'
25
+
26
+ Honeybadger::Dependency.register do
27
+ injection { puts 'injected' }
28
+ end
29
+
30
+ require 'honeybadger'
31
+
32
+ Honeybadger.configure do |config|
33
+ config.api_key = 'my_api_key'
34
+ config.logger = Logger.new STDOUT
35
+ end
36
+
37
+ begin
38
+ fail 'oops!'
39
+ rescue => e
40
+ Honeybadger.notify(e)
41
+ end
42
+ """
43
+ When I execute the file
44
+ Then the output should contain "injected"
45
+ And I should receive a Honeybadger notification
46
+
47
+ # TODO: also test 'Then the output should contain "injection failure"' after default
48
+ # logging is added.
49
+ Scenario: Dependency injection exception
50
+ Given the following Ruby app:
51
+ """
52
+ require 'honeybadger/dependency'
53
+
54
+ Honeybadger::Dependency.register do
55
+ injection { fail 'injection failure' }
56
+ end
57
+
58
+ require 'honeybadger'
59
+
60
+ Honeybadger.configure do |config|
61
+ config.api_key = 'my_api_key'
62
+ config.logger = Logger.new STDOUT
63
+ end
64
+
65
+ begin
66
+ fail 'oops!'
67
+ rescue => e
68
+ Honeybadger.notify(e)
69
+ end
70
+ """
71
+ When I execute the file
72
+ Then the output should not contain "injected"
73
+ And I should receive a Honeybadger notification
@@ -3,11 +3,10 @@ Given /^the following Rack app:$/ do |definition|
3
3
  end
4
4
 
5
5
  When /^I perform a Rack request to "([^\"]*)"$/ do |url|
6
- shim_file = File.join(PROJECT_ROOT, 'features', 'support', 'honeybadger_shim.rb.template')
7
6
  request_file = File.join(TEMP_DIR, 'rack_request.rb')
8
7
  File.open(request_file, 'w') do |file|
9
8
  file.puts "require 'rubygems'"
10
- file.puts IO.read(shim_file)
9
+ file.puts IO.read(SHIM_FILE)
11
10
  file.puts IO.read(RACK_FILE)
12
11
  file.puts "env = Rack::MockRequest.env_for(#{url.inspect})"
13
12
  file.puts "status, headers, body = app.call(env)"
@@ -0,0 +1,12 @@
1
+ Given /^the following Ruby app:$/ do |definition|
2
+ File.open(RUBY_FILE, 'w') do |file|
3
+ file.puts "require 'rubygems'"
4
+ file.write(IO.read(SHIM_FILE))
5
+ file.write(definition)
6
+ end
7
+ end
8
+
9
+ When /^I execute the file$/ do
10
+ step %(I run `ruby #{RUBY_FILE}`)
11
+ end
12
+
@@ -5,6 +5,8 @@ PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'
5
5
  TEMP_DIR = File.join(PROJECT_ROOT, 'tmp').freeze
6
6
  LOCAL_RAILS_ROOT = File.join(TEMP_DIR, 'rails_root').freeze
7
7
  RACK_FILE = File.join(TEMP_DIR, 'rack_app.rb').freeze
8
+ RUBY_FILE = File.join(TEMP_DIR, 'ruby_app.rb').freeze
9
+ SHIM_FILE = File.join(PROJECT_ROOT, 'features', 'support', 'honeybadger_shim.rb.template')
8
10
 
9
11
  Before do
10
12
  FileUtils.rm_rf(LOCAL_RAILS_ROOT)
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "binding_of_caller"
6
+ gem "honeybadger", :path=>"../"
7
+
8
+ gemspec :path=>"../"
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 4.0.3"
6
+ gem "honeybadger", :path=>"../"
7
+ gem "capistrano", "~> 3.0"
8
+ gem "better_errors", :require=>false
9
+ gem "rack-mini-profiler", :require=>false
10
+
11
+ gemspec :path=>"../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "honeybadger", :path=>"../"
6
+
7
+ gemspec :path=>"../"
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.11.2'
8
- s.date = '2014-03-13'
7
+ s.version = '1.12.0.beta2'
8
+ s.date = '2014-04-01'
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.'
@@ -53,33 +53,29 @@ Gem::Specification.new do |s|
53
53
  features/rails.feature
54
54
  features/rake.feature
55
55
  features/sinatra.feature
56
+ features/standalone.feature
56
57
  features/step_definitions/metal_steps.rb
57
58
  features/step_definitions/rack_steps.rb
58
59
  features/step_definitions/rails_steps.rb
59
60
  features/step_definitions/rake_steps.rb
61
+ features/step_definitions/standalone_steps.rb
60
62
  features/support/env.rb
61
63
  features/support/honeybadger_failure_shim.rb.template
62
64
  features/support/honeybadger_shim.rb.template
63
65
  features/support/rails.rb
64
66
  features/support/rake/Rakefile
67
+ gemfiles/binding_of_caller.gemfile
65
68
  gemfiles/rack.gemfile
66
- gemfiles/rack.gemfile.lock
69
+ gemfiles/rails.gemfile
67
70
  gemfiles/rails2.3.gemfile
68
- gemfiles/rails2.3.gemfile.lock
69
71
  gemfiles/rails3.0.gemfile
70
- gemfiles/rails3.0.gemfile.lock
71
72
  gemfiles/rails3.1.gemfile
72
- gemfiles/rails3.1.gemfile.lock
73
73
  gemfiles/rails3.2.gemfile
74
- gemfiles/rails3.2.gemfile.lock
75
74
  gemfiles/rails4.0.gemfile
76
- gemfiles/rails4.0.gemfile.lock
77
75
  gemfiles/rails4.1.gemfile
78
- gemfiles/rails4.1.gemfile.lock
79
76
  gemfiles/rake.gemfile
80
- gemfiles/rake.gemfile.lock
81
77
  gemfiles/sinatra.gemfile
82
- gemfiles/sinatra.gemfile.lock
78
+ gemfiles/standalone.gemfile
83
79
  generators/honeybadger/honeybadger_generator.rb
84
80
  generators/honeybadger/lib/insert_commands.rb
85
81
  generators/honeybadger/lib/rake_commands.rb
@@ -94,12 +90,22 @@ Gem::Specification.new do |s|
94
90
  lib/honeybadger/capistrano/legacy.rb
95
91
  lib/honeybadger/capistrano/tasks.rake
96
92
  lib/honeybadger/configuration.rb
93
+ lib/honeybadger/dependency.rb
94
+ lib/honeybadger/exception_extensions.rb
95
+ lib/honeybadger/integrations.rb
96
+ lib/honeybadger/integrations/delayed_job.rb
97
+ lib/honeybadger/integrations/delayed_job/plugin.rb
98
+ lib/honeybadger/integrations/sidekiq.rb
97
99
  lib/honeybadger/monitor.rb
98
100
  lib/honeybadger/monitor/railtie.rb
99
101
  lib/honeybadger/monitor/sender.rb
100
102
  lib/honeybadger/monitor/worker.rb
101
103
  lib/honeybadger/notice.rb
104
+ lib/honeybadger/payload.rb
102
105
  lib/honeybadger/rack.rb
106
+ lib/honeybadger/rack/error_notifier.rb
107
+ lib/honeybadger/rack/user_feedback.rb
108
+ lib/honeybadger/rack/user_informer.rb
103
109
  lib/honeybadger/rails.rb
104
110
  lib/honeybadger/rails/action_controller_catcher.rb
105
111
  lib/honeybadger/rails/controller_methods.rb
@@ -123,10 +129,15 @@ Gem::Specification.new do |s|
123
129
  spec/honeybadger/backtrace_spec.rb
124
130
  spec/honeybadger/capistrano_spec.rb
125
131
  spec/honeybadger/configuration_spec.rb
132
+ spec/honeybadger/dependency_spec.rb
133
+ spec/honeybadger/exception_extensions_spec.rb
134
+ spec/honeybadger/integrations/delayed_job_spec.rb
135
+ spec/honeybadger/integrations/sidekiq_spec.rb
126
136
  spec/honeybadger/logger_spec.rb
127
137
  spec/honeybadger/monitor/worker_spec.rb
128
138
  spec/honeybadger/notice_spec.rb
129
139
  spec/honeybadger/notifier_spec.rb
140
+ spec/honeybadger/payload_spec.rb
130
141
  spec/honeybadger/rack_spec.rb
131
142
  spec/honeybadger/rails/action_controller_spec.rb
132
143
  spec/honeybadger/rails_spec.rb