honeybadger 1.3.1 → 1.4.0

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 (53) hide show
  1. data/Appraisals +20 -0
  2. data/Gemfile +1 -13
  3. data/Gemfile.lock +39 -64
  4. data/MIT-LICENSE +5 -0
  5. data/README.md +102 -3
  6. data/Rakefile +9 -134
  7. data/features/metal.feature +6 -4
  8. data/features/rack.feature +3 -4
  9. data/features/rails.feature +106 -99
  10. data/features/rake.feature +0 -2
  11. data/features/sinatra.feature +1 -3
  12. data/features/step_definitions/metal_steps.rb +2 -1
  13. data/features/step_definitions/rack_steps.rb +2 -2
  14. data/features/step_definitions/rails_steps.rb +238 -0
  15. data/features/step_definitions/rake_steps.rb +1 -1
  16. data/features/support/env.rb +7 -7
  17. data/features/support/rails.rb +41 -58
  18. data/gemfiles/rails2.3.gemfile +9 -0
  19. data/gemfiles/rails2.3.gemfile.lock +102 -0
  20. data/gemfiles/rails3.0.gemfile +8 -0
  21. data/gemfiles/rails3.0.gemfile.lock +146 -0
  22. data/gemfiles/rails3.1.gemfile +8 -0
  23. data/gemfiles/rails3.1.gemfile.lock +161 -0
  24. data/gemfiles/rails3.2.gemfile +8 -0
  25. data/gemfiles/rails3.2.gemfile.lock +160 -0
  26. data/honeybadger.gemspec +30 -24
  27. data/lib/honeybadger.rb +117 -113
  28. data/lib/honeybadger/backtrace.rb +9 -3
  29. data/lib/honeybadger/configuration.rb +22 -0
  30. data/lib/honeybadger/notice.rb +9 -0
  31. data/lib/honeybadger/rack.rb +5 -4
  32. data/lib/honeybadger/rails3_tasks.rb +20 -23
  33. data/lib/honeybadger/sender.rb +10 -4
  34. data/lib/honeybadger/shared_tasks.rb +12 -1
  35. data/lib/honeybadger/tasks.rb +6 -1
  36. data/test/test_helper.rb +71 -71
  37. data/test/unit/backtrace_test.rb +26 -23
  38. data/test/unit/capistrano_test.rb +1 -1
  39. data/test/unit/configuration_test.rb +19 -3
  40. data/test/unit/honeybadger_tasks_test.rb +1 -1
  41. data/test/unit/logger_test.rb +1 -1
  42. data/test/unit/notice_test.rb +71 -16
  43. data/test/unit/notifier_test.rb +25 -5
  44. data/test/unit/rack_test.rb +21 -1
  45. data/test/unit/rails/action_controller_catcher_test.rb +1 -1
  46. data/test/unit/rails_test.rb +1 -1
  47. data/test/unit/sender_test.rb +1 -1
  48. metadata +69 -45
  49. data/SUPPORTED_RAILS_VERSIONS +0 -37
  50. data/TESTING.md +0 -33
  51. data/features/step_definitions/file_steps.rb +0 -10
  52. data/features/step_definitions/rails_application_steps.rb +0 -394
  53. data/features/support/terminal.rb +0 -107
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
  require 'stringio'
3
3
 
4
- class BacktraceTest < Honeybadger::UnitTest
4
+ class BacktraceTest < Test::Unit::TestCase
5
5
  should "parse a backtrace into lines" do
6
6
  array = [
7
7
  "app/models/user.rb:13:in `magic'",
@@ -112,32 +112,43 @@ class BacktraceTest < Honeybadger::UnitTest
112
112
 
113
113
  backtrace = Honeybadger::Backtrace.parse(array)
114
114
 
115
- assert_empty backtrace.lines.first.source
116
- assert_empty backtrace.lines.second.source
115
+ assert_equal backtrace.lines.first.source, {}
116
+ assert_equal backtrace.lines.second.source, {}
117
+ end
118
+
119
+ should "have an empty application trace by default" do
120
+ backtrace = Honeybadger::Backtrace.parse(build_backtrace_array)
121
+ assert_equal backtrace.application_lines, []
117
122
  end
118
123
 
119
124
  context "with a project root" do
120
125
  setup do
121
126
  @project_root = '/some/path'
122
127
  Honeybadger.configure {|config| config.project_root = @project_root }
123
- end
124
-
125
- teardown do
126
- reset_config
127
- end
128
128
 
129
- should "filter out the project root" do
130
- backtrace_with_root = Honeybadger::Backtrace.parse(
129
+ @backtrace_with_root = Honeybadger::Backtrace.parse(
131
130
  ["#{@project_root}/app/models/user.rb:7:in `latest'",
132
131
  "#{@project_root}/app/controllers/users_controller.rb:13:in `index'",
132
+ "#{@project_root}/vendor/plugins/foo/bar.rb:42:in `baz'",
133
133
  "/lib/something.rb:41:in `open'"],
134
134
  :filters => default_filters)
135
- backtrace_without_root = Honeybadger::Backtrace.parse(
136
- ["[PROJECT_ROOT]/app/models/user.rb:7:in `latest'",
137
- "[PROJECT_ROOT]/app/controllers/users_controller.rb:13:in `index'",
138
- "/lib/something.rb:41:in `open'"])
135
+ @backtrace_without_root = Honeybadger::Backtrace.parse(
136
+ ["[PROJECT_ROOT]/app/models/user.rb:7:in `latest'",
137
+ "[PROJECT_ROOT]/app/controllers/users_controller.rb:13:in `index'",
138
+ "[PROJECT_ROOT]/vendor/plugins/foo/bar.rb:42:in `baz'",
139
+ "/lib/something.rb:41:in `open'"])
140
+ end
139
141
 
140
- assert_equal backtrace_without_root, backtrace_with_root
142
+ should "filter out the project root" do
143
+ assert_equal @backtrace_without_root, @backtrace_with_root
144
+ end
145
+
146
+ should "have an application trace" do
147
+ assert_equal @backtrace_without_root.application_lines, @backtrace_without_root.lines[0..1]
148
+ end
149
+
150
+ should "filter ./vendor from application trace" do
151
+ assert_does_not_contain @backtrace_without_root.application_lines, @backtrace_without_root.lines[2]
141
152
  end
142
153
  end
143
154
 
@@ -148,10 +159,6 @@ class BacktraceTest < Honeybadger::UnitTest
148
159
  Honeybadger.configure {|config| config.project_root = @project_root }
149
160
  end
150
161
 
151
- teardown do
152
- reset_config
153
- end
154
-
155
162
  should "filter out the project root" do
156
163
  backtrace_with_root = Honeybadger::Backtrace.parse(
157
164
  ["#{@project_root}/app/models/user.rb:7:in `latest'",
@@ -172,10 +179,6 @@ class BacktraceTest < Honeybadger::UnitTest
172
179
  Honeybadger.configure {|config| config.project_root = '' }
173
180
  end
174
181
 
175
- teardown do
176
- reset_config
177
- end
178
-
179
182
  should "not filter line numbers with respect to any project root" do
180
183
  backtrace = ["/app/models/user.rb:7:in `latest'",
181
184
  "/app/controllers/users_controller.rb:13:in `index'",
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
  require 'capistrano/configuration'
4
4
  require 'honeybadger/capistrano'
5
5
 
6
- class CapistranoTest < Honeybadger::UnitTest
6
+ class CapistranoTest < Test::Unit::TestCase
7
7
  def setup
8
8
  super
9
9
  reset_config
@@ -1,8 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class ConfigurationTest < Honeybadger::UnitTest
4
- include DefinesConstants
5
-
3
+ class ConfigurationTest < Test::Unit::TestCase
6
4
  should "provide default values" do
7
5
  assert_config_default :proxy_host, nil
8
6
  assert_config_default :proxy_port, nil
@@ -28,6 +26,24 @@ class ConfigurationTest < Honeybadger::UnitTest
28
26
  Honeybadger::Configuration::IGNORE_DEFAULT
29
27
  assert_config_default :framework, 'Standalone'
30
28
  assert_config_default :source_extract_radius, 2
29
+ assert_config_default :async, nil
30
+ end
31
+
32
+ should "configure async as Proc" do
33
+ config = Honeybadger::Configuration.new
34
+ async_handler = Proc.new { |n| n.deliver }
35
+ assert !config.async?, 'Configuration#async? should be falsey'
36
+ config.async = async_handler
37
+ assert config.async?, 'Configuration#async? should be truthy'
38
+ assert_equal config.async, async_handler
39
+ end
40
+
41
+ should "configure async with block" do
42
+ config = Honeybadger::Configuration.new
43
+ assert !config.async?, 'Configuration#async? should be falsey'
44
+ config.async { |n| n }
45
+ assert config.async?, 'Configuration#async? should be truthy'
46
+ assert_equal config.async.call('foo'), 'foo'
31
47
  end
32
48
 
33
49
  should "stub current_user_method" do
@@ -6,7 +6,7 @@ require 'fakeweb'
6
6
 
7
7
  FakeWeb.allow_net_connect = false
8
8
 
9
- class HoneybadgerTasksTest < Honeybadger::UnitTest
9
+ class HoneybadgerTasksTest < Test::Unit::TestCase
10
10
  def successful_response(body = "")
11
11
  response = Net::HTTPSuccess.new('1.2', '200', 'OK')
12
12
  response.stubs(:body).returns(body)
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class LoggerTest < Honeybadger::UnitTest
3
+ class LoggerTest < Test::Unit::TestCase
4
4
  def stub_http(response, body = nil)
5
5
  response.stubs(:body => body) if body
6
6
  @http = stub(:post => response,
@@ -1,9 +1,7 @@
1
1
  require 'test_helper'
2
2
  require 'json'
3
3
 
4
- class NoticeTest < Honeybadger::UnitTest
5
- include DefinesConstants
6
-
4
+ class NoticeTest < Test::Unit::TestCase
7
5
  def configure
8
6
  Honeybadger::Configuration.new.tap do |config|
9
7
  config.api_key = 'abc123def456'
@@ -24,6 +22,16 @@ class NoticeTest < Honeybadger::UnitTest
24
22
  :env => { 'three' => 'four' } }.update(attrs))
25
23
  end
26
24
 
25
+ should "deliver to sender" do
26
+ sender = stub_sender!
27
+ notice = build_notice
28
+ notice.stubs(:to_json => { :foo => 'bar' })
29
+
30
+ notice.deliver
31
+
32
+ assert_received(sender, :send_to_honeybadger) { |expect| expect.with(notice.to_json) }
33
+ end
34
+
27
35
  should "generate json from as_json template" do
28
36
  notice = build_notice
29
37
  hash = {'foo' => 'bar'}
@@ -74,11 +82,40 @@ class NoticeTest < Honeybadger::UnitTest
74
82
 
75
83
  context "with a backtrace" do
76
84
  setup do
77
- @backtrace_array = ['my/file/backtrace:3']
85
+ @source = <<-RUBY
86
+ $:<<'lib'
87
+ require 'honeybadger'
88
+
89
+ begin
90
+ raise StandardError
91
+ rescue => e
92
+ puts Honeybadger::Notice.new(exception: e).backtrace.to_json
93
+ end
94
+ RUBY
95
+
96
+ @backtrace_array = ["my/file/backtrace:3",
97
+ "test/honeybadger/rack_test.rb:2:in `build_exception'",
98
+ "test/honeybadger/rack_test.rb:52:in `test_delivers_exception_from_rack'",
99
+ "foo/bar/baz.rb:28:in `run'"]
100
+
78
101
  @exception = build_exception
79
102
  @exception.set_backtrace(@backtrace_array)
80
103
  end
81
104
 
105
+ should "pass its backtrace filters for parsing" do
106
+ Honeybadger::Backtrace.expects(:parse).with(@backtrace_array, {:filters => 'foo'}).returns(mock(:lines => []))
107
+
108
+ notice = Honeybadger::Notice.new({:exception => @exception, :backtrace_filters => 'foo'})
109
+ end
110
+
111
+ should "pass its backtrace line filters for parsing" do
112
+ @backtrace_array.each do |line|
113
+ Honeybadger::Backtrace::Line.expects(:parse).with(line, {:filters => 'foo'})
114
+ end
115
+
116
+ notice = Honeybadger::Notice.new({:exception => @exception, :backtrace_filters => 'foo'})
117
+ end
118
+
82
119
  should "accept a backtrace from an exception or hash" do
83
120
  backtrace = Honeybadger::Backtrace.parse(@backtrace_array)
84
121
  notice_from_exception = build_notice(:exception => @exception)
@@ -93,23 +130,41 @@ class NoticeTest < Honeybadger::UnitTest
93
130
  "backtrace was not correctly set from a hash"
94
131
  end
95
132
 
96
- should "pass its backtrace filters for parsing" do
97
- Honeybadger::Backtrace.expects(:parse).with(@backtrace_array, {:filters => 'foo'}).returns(mock(:lines => []))
98
-
99
- notice = Honeybadger::Notice.new({:exception => @exception, :backtrace_filters => 'foo'})
133
+ context "without application trace" do
134
+ setup do
135
+ Honeybadger.configuration.project_root = '/foo/bar'
136
+ @string_io = StringIO.new(@source)
137
+ File.stubs(:exists?).with('my/file/backtrace').returns true
138
+ File.stubs(:open).with('my/file/backtrace').yields @string_io
139
+ end
140
+
141
+ should "include source extract from backtrace" do
142
+ backtrace = Honeybadger::Backtrace.parse(@backtrace_array)
143
+ notice_from_exception = build_notice(:exception => @exception)
144
+ @string_io.rewind
145
+
146
+ assert_not_equal notice_from_exception.source_extract, {}, 'Expected backtrace source extract to be found'
147
+ assert_equal backtrace.lines.first.source, notice_from_exception.source_extract
148
+ end
100
149
  end
101
150
 
102
- should "pass its backtrace line filters for parsing" do
103
- Honeybadger::Backtrace::Line.expects(:parse).with(@backtrace_array.first, {:filters => 'foo'})
151
+ context 'with an application trace' do
152
+ setup do
153
+ Honeybadger.configuration.project_root = 'test/honeybadger/'
104
154
 
105
- notice = Honeybadger::Notice.new({:exception => @exception, :backtrace_filters => 'foo'})
106
- end
155
+ @string_io = StringIO.new(@source)
156
+ File.stubs(:exists?).with('test/honeybadger/rack_test.rb').returns true
157
+ File.stubs(:open).with('test/honeybadger/rack_test.rb').yields @string_io
158
+ end
107
159
 
108
- should "include source extract from backtrace" do
109
- backtrace = Honeybadger::Backtrace.parse(@backtrace_array)
110
- notice_from_exception = build_notice(:exception => @exception)
160
+ should "include source extract from first line of application trace" do
161
+ backtrace = Honeybadger::Backtrace.parse(@backtrace_array)
162
+ notice_from_exception = build_notice(:exception => @exception)
163
+ @string_io.rewind
111
164
 
112
- assert_equal backtrace.lines.first.source, notice_from_exception.source_extract
165
+ assert_not_equal notice_from_exception.source_extract, {}, 'Expected backtrace source extract to be found'
166
+ assert_equal backtrace.lines.second.source, notice_from_exception.source_extract
167
+ end
113
168
  end
114
169
  end
115
170
 
@@ -1,14 +1,12 @@
1
1
  require 'test_helper'
2
2
 
3
- class NotifierTest < Honeybadger::UnitTest
3
+ class NotifierTest < Test::Unit::TestCase
4
4
  class OriginalException < Exception
5
5
  end
6
6
 
7
7
  class ContinuedException < Exception
8
8
  end
9
9
 
10
- include DefinesConstants
11
-
12
10
  def setup
13
11
  super
14
12
  reset_config
@@ -16,7 +14,6 @@ class NotifierTest < Honeybadger::UnitTest
16
14
 
17
15
  def assert_sent(notice, notice_args)
18
16
  assert_received(Honeybadger::Notice, :new) {|expect| expect.with(has_entries(notice_args)) }
19
- assert_received(notice, :to_json)
20
17
  assert_received(Honeybadger.sender, :send_to_honeybadger) {|expect| expect.with(notice.to_json) }
21
18
  end
22
19
 
@@ -59,6 +56,29 @@ class NotifierTest < Honeybadger::UnitTest
59
56
  assert_equal sender, Honeybadger.sender
60
57
  end
61
58
 
59
+ should "create and send a notice asynchronously" do
60
+ set_public_env
61
+ notice = stub_notice!
62
+ notice_args = { :error_message => 'uh oh' }
63
+
64
+ async_expectation = stub(:received => true)
65
+ async_handler = Proc.new do |notice|
66
+ async_expectation.received
67
+ notice.deliver
68
+ end
69
+
70
+ Honeybadger.configure do |config|
71
+ config.async = async_handler
72
+ end
73
+
74
+ stub_sender!
75
+
76
+ Honeybadger.notify(notice_args)
77
+
78
+ assert_received(async_expectation, :received)
79
+ assert_sent(notice, notice_args)
80
+ end
81
+
62
82
  should "create and send a notice for an exception" do
63
83
  set_public_env
64
84
  exception = build_exception
@@ -156,7 +176,7 @@ class NotifierTest < Honeybadger::UnitTest
156
176
  config_opts = { 'one' => 'two', 'three' => 'four' }
157
177
  notice = stub_notice!
158
178
  stub_sender!
159
- Honeybadger.configuration = stub('config', :merge => config_opts, :public? => true)
179
+ Honeybadger.configuration = stub('config', :merge => config_opts, :public? => true, :async? => false)
160
180
 
161
181
  Honeybadger.notify(exception)
162
182
 
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class RackTest < Honeybadger::UnitTest
3
+ class RackTest < Test::Unit::TestCase
4
4
  should "call the upstream app with the environment" do
5
5
  environment = { 'key' => 'value' }
6
6
  app = lambda { |env| ['response', {}, env] }
@@ -54,6 +54,26 @@ class RackTest < Honeybadger::UnitTest
54
54
  end
55
55
  end
56
56
 
57
+ should "deliver an exception in sinatra.error" do
58
+ Honeybadger.stubs(:notify_or_ignore)
59
+ exception = build_exception
60
+ environment = { 'key' => 'value' }
61
+
62
+ response = [200, {}, ['okay']]
63
+ app = lambda do |env|
64
+ env['sinatra.error'] = exception
65
+ response
66
+ end
67
+ stack = Honeybadger::Rack.new(app)
68
+
69
+ actual_response = stack.call(environment)
70
+
71
+ assert_equal response, actual_response
72
+ assert_received(Honeybadger, :notify_or_ignore) do |expect|
73
+ expect.with(exception, :rack_env => environment)
74
+ end
75
+ end
76
+
57
77
  should "clear context after app is called" do
58
78
  Honeybadger.context( :foo => :bar )
59
79
  assert_equal({ :foo => :bar }, Thread.current[:honeybadger_context])
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
  require 'honeybadger/rails'
3
3
 
4
- class ActionControllerCatcherTest < Honeybadger::UnitTest
4
+ class ActionControllerCatcherTest < Test::Unit::TestCase
5
5
  include DefinesConstants
6
6
 
7
7
  def setup
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
  require 'honeybadger/rails'
3
3
 
4
- class RailsInitializerTest < Honeybadger::UnitTest
4
+ class RailsInitializerTest < Test::Unit::TestCase
5
5
  include DefinesConstants
6
6
 
7
7
  should "trigger use of Rails' logger if logger isn't set and Rails' logger exists" do
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class SenderTest < Honeybadger::UnitTest
3
+ class SenderTest < Test::Unit::TestCase
4
4
  def setup
5
5
  reset_config
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeybadger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-24 00:00:00.000000000 Z
12
+ date: 2012-12-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -44,13 +44,13 @@ dependencies:
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
46
  - !ruby/object:Gem::Dependency
47
- name: actionpack
47
+ name: cucumber
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 2.3.8
53
+ version: 1.2.1
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,15 +58,15 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 2.3.8
61
+ version: 1.2.1
62
62
  - !ruby/object:Gem::Dependency
63
- name: activerecord
63
+ name: rspec
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: 2.3.8
69
+ version: 2.12.0
70
70
  type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,15 +74,31 @@ dependencies:
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: 2.3.8
77
+ version: 2.12.0
78
78
  - !ruby/object:Gem::Dependency
79
- name: activesupport
79
+ name: fakeweb
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 1.3.0
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 1.3.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: sham_rack
80
96
  requirement: !ruby/object:Gem::Requirement
81
97
  none: false
82
98
  requirements:
83
99
  - - ~>
84
100
  - !ruby/object:Gem::Version
85
- version: 2.3.8
101
+ version: 1.3.0
86
102
  type: :development
87
103
  prerelease: false
88
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +106,7 @@ dependencies:
90
106
  requirements:
91
107
  - - ~>
92
108
  - !ruby/object:Gem::Version
93
- version: 2.3.8
109
+ version: 1.3.0
94
110
  - !ruby/object:Gem::Dependency
95
111
  name: bourne
96
112
  requirement: !ruby/object:Gem::Requirement
@@ -108,13 +124,13 @@ dependencies:
108
124
  - !ruby/object:Gem::Version
109
125
  version: '1.0'
110
126
  - !ruby/object:Gem::Dependency
111
- name: cucumber
127
+ name: shoulda
112
128
  requirement: !ruby/object:Gem::Requirement
113
129
  none: false
114
130
  requirements:
115
131
  - - ~>
116
132
  - !ruby/object:Gem::Version
117
- version: 0.10.6
133
+ version: 2.11.3
118
134
  type: :development
119
135
  prerelease: false
120
136
  version_requirements: !ruby/object:Gem::Requirement
@@ -122,87 +138,87 @@ dependencies:
122
138
  requirements:
123
139
  - - ~>
124
140
  - !ruby/object:Gem::Version
125
- version: 0.10.6
141
+ version: 2.11.3
126
142
  - !ruby/object:Gem::Dependency
127
- name: rspec
143
+ name: capistrano
128
144
  requirement: !ruby/object:Gem::Requirement
129
145
  none: false
130
146
  requirements:
131
- - - ~>
147
+ - - ! '>='
132
148
  - !ruby/object:Gem::Version
133
- version: 2.6.0
149
+ version: '0'
134
150
  type: :development
135
151
  prerelease: false
136
152
  version_requirements: !ruby/object:Gem::Requirement
137
153
  none: false
138
154
  requirements:
139
- - - ~>
155
+ - - ! '>='
140
156
  - !ruby/object:Gem::Version
141
- version: 2.6.0
157
+ version: '0'
142
158
  - !ruby/object:Gem::Dependency
143
- name: fakeweb
159
+ name: rake
144
160
  requirement: !ruby/object:Gem::Requirement
145
161
  none: false
146
162
  requirements:
147
- - - ~>
163
+ - - ! '>='
148
164
  - !ruby/object:Gem::Version
149
- version: 1.3.0
165
+ version: '0'
150
166
  type: :development
151
167
  prerelease: false
152
168
  version_requirements: !ruby/object:Gem::Requirement
153
169
  none: false
154
170
  requirements:
155
- - - ~>
171
+ - - ! '>='
156
172
  - !ruby/object:Gem::Version
157
- version: 1.3.0
173
+ version: '0'
158
174
  - !ruby/object:Gem::Dependency
159
- name: sham_rack
175
+ name: sinatra
160
176
  requirement: !ruby/object:Gem::Requirement
161
177
  none: false
162
178
  requirements:
163
- - - ~>
179
+ - - ! '>='
164
180
  - !ruby/object:Gem::Version
165
- version: 1.3.0
181
+ version: '0'
166
182
  type: :development
167
183
  prerelease: false
168
184
  version_requirements: !ruby/object:Gem::Requirement
169
185
  none: false
170
186
  requirements:
171
- - - ~>
187
+ - - ! '>='
172
188
  - !ruby/object:Gem::Version
173
- version: 1.3.0
189
+ version: '0'
174
190
  - !ruby/object:Gem::Dependency
175
- name: shoulda
191
+ name: aruba
176
192
  requirement: !ruby/object:Gem::Requirement
177
193
  none: false
178
194
  requirements:
179
- - - ~>
195
+ - - ! '>='
180
196
  - !ruby/object:Gem::Version
181
- version: 2.11.3
197
+ version: '0'
182
198
  type: :development
183
199
  prerelease: false
184
200
  version_requirements: !ruby/object:Gem::Requirement
185
201
  none: false
186
202
  requirements:
187
- - - ~>
203
+ - - ! '>='
188
204
  - !ruby/object:Gem::Version
189
- version: 2.11.3
205
+ version: '0'
190
206
  - !ruby/object:Gem::Dependency
191
- name: capistrano
207
+ name: appraisal
192
208
  requirement: !ruby/object:Gem::Requirement
193
209
  none: false
194
210
  requirements:
195
- - - ~>
211
+ - - ! '>='
196
212
  - !ruby/object:Gem::Version
197
- version: 2.8.0
213
+ version: '0'
198
214
  type: :development
199
215
  prerelease: false
200
216
  version_requirements: !ruby/object:Gem::Requirement
201
217
  none: false
202
218
  requirements:
203
- - - ~>
219
+ - - ! '>='
204
220
  - !ruby/object:Gem::Version
205
- version: 2.8.0
221
+ version: '0'
206
222
  description: Make managing application errors a more pleasant experience.
207
223
  email: josh@honeybadger.io
208
224
  executables: []
@@ -211,29 +227,34 @@ extra_rdoc_files:
211
227
  - README.md
212
228
  - MIT-LICENSE
213
229
  files:
230
+ - Appraisals
214
231
  - Gemfile
215
232
  - Gemfile.lock
216
233
  - Guardfile
217
234
  - MIT-LICENSE
218
235
  - README.md
219
236
  - Rakefile
220
- - SUPPORTED_RAILS_VERSIONS
221
- - TESTING.md
222
237
  - features/metal.feature
223
238
  - features/rack.feature
224
239
  - features/rails.feature
225
240
  - features/rake.feature
226
241
  - features/sinatra.feature
227
- - features/step_definitions/file_steps.rb
228
242
  - features/step_definitions/metal_steps.rb
229
243
  - features/step_definitions/rack_steps.rb
230
- - features/step_definitions/rails_application_steps.rb
244
+ - features/step_definitions/rails_steps.rb
231
245
  - features/step_definitions/rake_steps.rb
232
246
  - features/support/env.rb
233
247
  - features/support/honeybadger_shim.rb.template
234
248
  - features/support/rails.rb
235
249
  - features/support/rake/Rakefile
236
- - features/support/terminal.rb
250
+ - gemfiles/rails2.3.gemfile
251
+ - gemfiles/rails2.3.gemfile.lock
252
+ - gemfiles/rails3.0.gemfile
253
+ - gemfiles/rails3.0.gemfile.lock
254
+ - gemfiles/rails3.1.gemfile
255
+ - gemfiles/rails3.1.gemfile.lock
256
+ - gemfiles/rails3.2.gemfile
257
+ - gemfiles/rails3.2.gemfile.lock
237
258
  - generators/honeybadger/honeybadger_generator.rb
238
259
  - generators/honeybadger/lib/insert_commands.rb
239
260
  - generators/honeybadger/lib/rake_commands.rb
@@ -289,6 +310,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
289
310
  - - ! '>='
290
311
  - !ruby/object:Gem::Version
291
312
  version: '0'
313
+ segments:
314
+ - 0
315
+ hash: 2390415498026321705
292
316
  required_rubygems_version: !ruby/object:Gem::Requirement
293
317
  none: false
294
318
  requirements:
@@ -297,7 +321,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
297
321
  version: '0'
298
322
  requirements: []
299
323
  rubyforge_project:
300
- rubygems_version: 1.8.24
324
+ rubygems_version: 1.8.23
301
325
  signing_key:
302
326
  specification_version: 2
303
327
  summary: Error reports you can be happy about.