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