honeybadger 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
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.