airbrake 5.5.0 → 5.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,11 @@
1
+ require 'sinatra/base'
2
+
3
+ class SinatraApp1 < Sinatra::Base
4
+ get('/') { raise AirbrakeTestError }
5
+ end
6
+
7
+ Airbrake.configure(SinatraApp1) do |c|
8
+ c.project_id = 113743
9
+ c.project_key = 'fd04e13d806a90f96614ad8e529b2822'
10
+ c.logger = Logger.new('/dev/null')
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'sinatra/base'
2
+
3
+ class SinatraApp2 < Sinatra::Base
4
+ get('/') { raise AirbrakeTestError }
5
+ end
6
+
7
+ Airbrake.configure(SinatraApp2) do |c|
8
+ c.project_id = 99123
9
+ c.project_key = 'ad04e13d806a90f96614ad8e529b2821'
10
+ c.logger = Logger.new('/dev/null')
11
+ end
@@ -85,18 +85,36 @@ RSpec.describe "Rails integration specs" do
85
85
  end
86
86
 
87
87
  describe "Active Record callbacks" do
88
- it "reports exceptions in after_commit callbacks" do
89
- get '/active_record_after_commit'
90
- wait_for_a_request_with_body(
91
- /"type":"AirbrakeTestError","message":"after_commit"/
92
- )
93
- end
88
+ if Gem::Version.new(Rails.version) >= Gem::Version.new('5.1.0.alpha')
89
+ it "reports exceptions in after_commit callbacks" do
90
+ get '/active_record_after_commit'
91
+ wait_for(
92
+ a_request(:post, endpoint).
93
+ with(body: /"type":"AirbrakeTestError","message":"after_commit"/)
94
+ ).to have_been_made.twice
95
+ end
94
96
 
95
- it "reports exceptions in after_rollback callbacks" do
96
- get '/active_record_after_rollback'
97
- wait_for_a_request_with_body(
98
- /"type":"AirbrakeTestError","message":"after_rollback"/
99
- )
97
+ it "reports exceptions in after_rollback callbacks" do
98
+ get '/active_record_after_rollback'
99
+ wait_for(
100
+ a_request(:post, endpoint).
101
+ with(body: /"type":"AirbrakeTestError","message":"after_rollback"/)
102
+ ).to have_been_made.twice
103
+ end
104
+ else
105
+ it "reports exceptions in after_commit callbacks" do
106
+ get '/active_record_after_commit'
107
+ wait_for_a_request_with_body(
108
+ /"type":"AirbrakeTestError","message":"after_commit"/
109
+ )
110
+ end
111
+
112
+ it "reports exceptions in after_rollback callbacks" do
113
+ get '/active_record_after_rollback'
114
+ wait_for_a_request_with_body(
115
+ /"type":"AirbrakeTestError","message":"after_rollback"/
116
+ )
117
+ end
100
118
  end
101
119
  end
102
120
 
@@ -1,6 +1,10 @@
1
1
  require 'sinatra'
2
2
  require 'spec_helper'
3
+
3
4
  require 'apps/sinatra/dummy_app'
5
+ require 'apps/sinatra/composite_app/sinatra_app1'
6
+ require 'apps/sinatra/composite_app/sinatra_app2'
7
+
4
8
  require 'integration/shared_examples/rack_examples'
5
9
 
6
10
  RSpec.describe "Sinatra integration specs" do
@@ -14,4 +18,60 @@ RSpec.describe "Sinatra integration specs" do
14
18
  wait_for_a_request_with_body(/"context":{.*"version":"1.2.3 Sinatra/)
15
19
  end
16
20
  end
21
+
22
+ context "when multiple apps are mounted" do
23
+ let(:endpoint1) do
24
+ 'https://airbrake.io/api/v3/projects/113743/notices?key=fd04e13d806a90f96614ad8e529b2822'
25
+ end
26
+
27
+ let(:endpoint2) do
28
+ 'https://airbrake.io/api/v3/projects/99123/notices?key=ad04e13d806a90f96614ad8e529b2821'
29
+ end
30
+
31
+ def env_for(url, opts = {})
32
+ Rack::MockRequest.env_for(url, opts)
33
+ end
34
+
35
+ before do
36
+ stub_request(:post, endpoint1).to_return(status: 201, body: '{}')
37
+ stub_request(:post, endpoint2).to_return(status: 201, body: '{}')
38
+ end
39
+
40
+ context "and when both apps use their own notifiers and middlewares" do
41
+ let(:app) do
42
+ Rack::Builder.new do
43
+ map('/app1') do
44
+ use Airbrake::Rack::Middleware, SinatraApp1
45
+ run SinatraApp1.new
46
+ end
47
+
48
+ map '/app2' do
49
+ use Airbrake::Rack::Middleware, SinatraApp2
50
+ run SinatraApp2.new
51
+ end
52
+ end
53
+ end
54
+
55
+ it "reports errors from SinatraApp1 notifier" do
56
+ get '/app1'
57
+
58
+ body = %r|"backtrace":\[{"file":".+apps/sinatra/composite_app/sinatra_app1.rb"|
59
+
60
+ wait_for(
61
+ a_request(:post, endpoint1).
62
+ with(body: body)
63
+ ).to have_been_made.once
64
+ end
65
+
66
+ it "reports errors from SinatraApp2 notifier" do
67
+ get '/app2'
68
+
69
+ body = %r|"backtrace":\[{"file":".+apps/sinatra/composite_app/sinatra_app2.rb"|
70
+ wait_for(
71
+ a_request(:post, endpoint2).
72
+ with(body: body)
73
+ ).to have_been_made.once
74
+ end
75
+ end
76
+ end
17
77
  end
@@ -29,20 +29,63 @@ RSpec.describe Airbrake::Rack::Middleware do
29
29
 
30
30
  describe "#call" do
31
31
  context "when app raises an exception" do
32
- it "rescues the exception, notifies Airbrake & re-raises it" do
33
- expect { described_class.new(faulty_app).call(env_for('/')) }.
34
- to raise_error(AirbrakeTestError)
32
+ context "and when the notifier name is specified" do
33
+ let(:notifier_name) { :rack_middleware_initialize }
35
34
 
36
- wait_for_a_request_with_body(/"errors":\[{"type":"AirbrakeTestError"/)
35
+ let(:bingo_endpoint) do
36
+ 'https://airbrake.io/api/v3/projects/92123/notices?key=ad04e13d806a90f96614ad8e529b2821'
37
+ end
38
+
39
+ let(:expected_body) do
40
+ /"errors":\[{"type":"AirbrakeTestError"/
41
+ end
42
+
43
+ before do
44
+ Airbrake.configure(notifier_name) do |c|
45
+ c.project_id = 92123
46
+ c.project_key = 'ad04e13d806a90f96614ad8e529b2821'
47
+ c.logger = Logger.new('/dev/null')
48
+ c.app_version = '3.2.1'
49
+ end
50
+
51
+ stub_request(:post, bingo_endpoint).to_return(status: 201, body: '{}')
52
+ end
53
+
54
+ after { Airbrake.close(notifier_name) }
55
+
56
+ it "notifies via the specified notifier" do
57
+ expect do
58
+ described_class.new(faulty_app, notifier_name).call(env_for('/'))
59
+ end.to raise_error(AirbrakeTestError)
60
+
61
+ wait_for(
62
+ a_request(:post, bingo_endpoint).
63
+ with(body: expected_body)
64
+ ).to have_been_made.once
65
+
66
+ expect(
67
+ a_request(:post, endpoint).
68
+ with(body: expected_body)
69
+ ).not_to have_been_made
70
+ end
37
71
  end
38
72
 
39
- it "sends framework version and name" do
40
- expect { described_class.new(faulty_app).call(env_for('/bingo/bango')) }.
41
- to raise_error(AirbrakeTestError)
73
+ context "and when the notifier is not configured" do
74
+ it "rescues the exception, notifies Airbrake & re-raises it" do
75
+ expect { described_class.new(faulty_app).call(env_for('/')) }.
76
+ to raise_error(AirbrakeTestError)
42
77
 
43
- wait_for_a_request_with_body(
44
- %r("context":{.*"version":"1.2.3 (Rails|Sinatra|Rack\.version)/.+".+})
45
- )
78
+ wait_for_a_request_with_body(/"errors":\[{"type":"AirbrakeTestError"/)
79
+ end
80
+
81
+ it "sends framework version and name" do
82
+ expect { described_class.new(faulty_app).call(env_for('/bingo/bango')) }.
83
+ to raise_error(AirbrakeTestError)
84
+
85
+ wait_for_a_request_with_body(
86
+ %r("context":{.*"version":"1.2.3 (Rails|Sinatra|Rack\.version)/.+".+})
87
+ )
88
+ end
46
89
  end
47
90
  end
48
91
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airbrake
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.5.0
4
+ version: 5.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airbrake Technologies, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-14 00:00:00.000000000 Z
11
+ date: 2016-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: airbrake-ruby
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
19
+ version: '1.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.5'
26
+ version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1'
117
+ version: '2'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '1'
124
+ version: '2'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rack-test
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -187,10 +187,10 @@ files:
187
187
  - spec/apps/rack/dummy_app.rb
188
188
  - spec/apps/rails/dummy_app.rb
189
189
  - spec/apps/rails/dummy_task.rake
190
- - spec/apps/rails/logs/32.log
191
- - spec/apps/rails/logs/40.log
192
- - spec/apps/rails/logs/42.log
193
190
  - spec/apps/rails/logs/50.log
191
+ - spec/apps/rails/logs/51.log
192
+ - spec/apps/sinatra/composite_app/sinatra_app1.rb
193
+ - spec/apps/sinatra/composite_app/sinatra_app2.rb
194
194
  - spec/apps/sinatra/dummy_app.rb
195
195
  - spec/integration/rack/rack_spec.rb
196
196
  - spec/integration/rails/rails_spec.rb
@@ -233,10 +233,10 @@ test_files:
233
233
  - spec/apps/rack/dummy_app.rb
234
234
  - spec/apps/rails/dummy_app.rb
235
235
  - spec/apps/rails/dummy_task.rake
236
- - spec/apps/rails/logs/32.log
237
- - spec/apps/rails/logs/40.log
238
- - spec/apps/rails/logs/42.log
239
236
  - spec/apps/rails/logs/50.log
237
+ - spec/apps/rails/logs/51.log
238
+ - spec/apps/sinatra/composite_app/sinatra_app1.rb
239
+ - spec/apps/sinatra/composite_app/sinatra_app2.rb
240
240
  - spec/apps/sinatra/dummy_app.rb
241
241
  - spec/integration/rack/rack_spec.rb
242
242
  - spec/integration/rails/rails_spec.rb
@@ -1,240 +0,0 @@
1
- # Logfile created on 2016-08-04 18:03:32 +0300 by logger.rb/54362
2
- Connecting to database specified by DATABASE_URL
3
-  (1.1ms) select sqlite_version(*)
4
-  (0.3ms) CREATE TABLE "books" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255))
5
-  (0.2ms) CREATE TABLE "delayed_jobs" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "priority" integer DEFAULT 0 NOT NULL, "attempts" integer DEFAULT 0 NOT NULL, "handler" text NOT NULL, "last_error" text, "run_at" datetime, "locked_at" datetime, "failed_at" datetime, "locked_by" varchar(255), "queue" varchar(255), "created_at" datetime, "updated_at" datetime) 
6
-  (0.1ms) CREATE INDEX "delayed_jobs_priority" ON "delayed_jobs" ("priority", "run_at")
7
- Started GET "/crash" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
8
- Processing by DummyController#crash as HTML
9
- Completed 500 Internal Server Error in 0.8ms
10
-
11
- AirbrakeTestError (AirbrakeTestError):
12
- lib/airbrake/rack/middleware.rb:22:in `call'
13
-
14
-
15
- Started GET "/" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
16
- Processing by DummyController#index as HTML
17
- Rendered dummy/index.html.erb within layouts/application (0.8ms)
18
- Completed 200 OK in 12.6ms (Views: 12.3ms | ActiveRecord: 0.0ms)
19
- Started GET "/notify_airbrake_helper?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
20
- Processing by DummyController#notify_airbrake_helper as HTML
21
- Parameters: {"foo"=>"bar"}
22
- Rendered dummy/notify_airbrake_helper.html.erb within layouts/application (0.3ms)
23
- Completed 200 OK in 13.4ms (Views: 9.6ms | ActiveRecord: 0.0ms)
24
- Started GET "/notify_airbrake_helper?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
25
- Processing by DummyController#notify_airbrake_helper as HTML
26
- Parameters: {"foo"=>"bar"}
27
- Rendered dummy/notify_airbrake_helper.html.erb within layouts/application (6.5ms)
28
- Completed 200 OK in 21.0ms (Views: 18.6ms | ActiveRecord: 0.0ms)
29
- Started GET "/notify_airbrake_helper?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
30
- Processing by DummyController#notify_airbrake_helper as HTML
31
- Parameters: {"foo"=>"bar"}
32
- Rendered dummy/notify_airbrake_helper.html.erb within layouts/application (0.2ms)
33
- Completed 200 OK in 11.8ms (Views: 8.7ms | ActiveRecord: 0.0ms)
34
- Started GET "/notify_airbrake_helper?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
35
- Processing by DummyController#notify_airbrake_helper as HTML
36
- Parameters: {"foo"=>"bar"}
37
- Rendered dummy/notify_airbrake_helper.html.erb within layouts/application (0.2ms)
38
- Completed 200 OK in 15.3ms (Views: 10.9ms | ActiveRecord: 0.0ms)
39
- Started GET "/notify_airbrake_helper?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
40
- Processing by DummyController#notify_airbrake_helper as HTML
41
- Parameters: {"foo"=>"bar"}
42
- Rendered dummy/notify_airbrake_helper.html.erb within layouts/application (0.1ms)
43
- Completed 200 OK in 3.0ms (Views: 0.7ms | ActiveRecord: 0.0ms)
44
- Started GET "/notify_airbrake_sync_helper?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
45
- Processing by DummyController#notify_airbrake_sync_helper as HTML
46
- Parameters: {"foo"=>"bar"}
47
- Rendered dummy/notify_airbrake_sync_helper.html.erb within layouts/application (0.2ms)
48
- Completed 200 OK in 11.3ms (Views: 1.0ms | ActiveRecord: 0.0ms)
49
- Started GET "/notify_airbrake_sync_helper?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
50
- Processing by DummyController#notify_airbrake_sync_helper as HTML
51
- Parameters: {"foo"=>"bar"}
52
- Rendered dummy/notify_airbrake_sync_helper.html.erb within layouts/application (0.1ms)
53
- Completed 200 OK in 10.0ms (Views: 0.7ms | ActiveRecord: 0.0ms)
54
- Started GET "/notify_airbrake_sync_helper?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
55
- Processing by DummyController#notify_airbrake_sync_helper as HTML
56
- Parameters: {"foo"=>"bar"}
57
- Rendered dummy/notify_airbrake_sync_helper.html.erb within layouts/application (0.2ms)
58
- Completed 200 OK in 13.4ms (Views: 0.9ms | ActiveRecord: 0.0ms)
59
- Started GET "/notify_airbrake_sync_helper?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
60
- Processing by DummyController#notify_airbrake_sync_helper as HTML
61
- Parameters: {"foo"=>"bar"}
62
- Rendered dummy/notify_airbrake_sync_helper.html.erb within layouts/application (0.2ms)
63
- Completed 200 OK in 11.5ms (Views: 1.0ms | ActiveRecord: 0.0ms)
64
- Started GET "/notify_airbrake_sync_helper?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
65
- Processing by DummyController#notify_airbrake_sync_helper as HTML
66
- Parameters: {"foo"=>"bar"}
67
- Rendered dummy/notify_airbrake_sync_helper.html.erb within layouts/application (0.3ms)
68
- Completed 200 OK in 21.2ms (Views: 1.3ms | ActiveRecord: 0.0ms)
69
- Started GET "/crash?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
70
- Processing by DummyController#crash as HTML
71
- Parameters: {"foo"=>"bar"}
72
- Completed 500 Internal Server Error in 0.2ms
73
-
74
- AirbrakeTestError (AirbrakeTestError):
75
- lib/airbrake/rack/middleware.rb:22:in `call'
76
-
77
-
78
- Started GET "/crash?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
79
- Processing by DummyController#crash as HTML
80
- Parameters: {"foo"=>"bar"}
81
- Completed 500 Internal Server Error in 0.2ms
82
-
83
- AirbrakeTestError (AirbrakeTestError):
84
- lib/airbrake/rack/middleware.rb:22:in `call'
85
-
86
-
87
- Started GET "/crash?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
88
- Processing by DummyController#crash as HTML
89
- Parameters: {"foo"=>"bar"}
90
- Completed 500 Internal Server Error in 0.2ms
91
-
92
- AirbrakeTestError (AirbrakeTestError):
93
- lib/airbrake/rack/middleware.rb:22:in `call'
94
-
95
-
96
- Started GET "/crash?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
97
- Processing by DummyController#crash as HTML
98
- Parameters: {"foo"=>"bar"}
99
- Completed 500 Internal Server Error in 0.2ms
100
-
101
- AirbrakeTestError (AirbrakeTestError):
102
- lib/airbrake/rack/middleware.rb:22:in `call'
103
-
104
-
105
- Started GET "/crash?foo=bar" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
106
- Processing by DummyController#crash as HTML
107
- Parameters: {"foo"=>"bar"}
108
- Completed 500 Internal Server Error in 0.2ms
109
-
110
- AirbrakeTestError (AirbrakeTestError):
111
- lib/airbrake/rack/middleware.rb:22:in `call'
112
-
113
-
114
- Started GET "/crash" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
115
- Processing by DummyController#crash as HTML
116
- Completed 500 Internal Server Error in 0.2ms
117
-
118
- AirbrakeTestError (AirbrakeTestError):
119
- lib/airbrake/rack/middleware.rb:22:in `call'
120
-
121
-
122
- Started GET "/crash" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
123
- Processing by DummyController#crash as HTML
124
- Completed 500 Internal Server Error in 0.2ms
125
-
126
- AirbrakeTestError (AirbrakeTestError):
127
- lib/airbrake/rack/middleware.rb:22:in `call'
128
-
129
-
130
- Started GET "/crash" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
131
- Processing by DummyController#crash as HTML
132
- Completed 500 Internal Server Error in 0.2ms
133
-
134
- AirbrakeTestError (AirbrakeTestError):
135
- lib/airbrake/rack/middleware.rb:22:in `call'
136
-
137
-
138
- Started GET "/crash" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
139
- Processing by DummyController#crash as HTML
140
- Completed 500 Internal Server Error in 0.2ms
141
-
142
- AirbrakeTestError (AirbrakeTestError):
143
- lib/airbrake/rack/middleware.rb:22:in `call'
144
-
145
-
146
- Started GET "/crash" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
147
- Processing by DummyController#crash as HTML
148
- Completed 500 Internal Server Error in 0.3ms
149
-
150
- AirbrakeTestError (AirbrakeTestError):
151
- lib/airbrake/rack/middleware.rb:22:in `call'
152
-
153
-
154
- Started GET "/crash" for 127.0.0.1 at 2016-08-04 18:03:33 +0300
155
- Processing by DummyController#crash as HTML
156
- Completed 500 Internal Server Error in 0.2ms
157
-
158
- AirbrakeTestError (AirbrakeTestError):
159
- lib/airbrake/rack/middleware.rb:22:in `call'
160
-
161
-
162
- Started GET "/crash" for 127.0.0.1 at 2016-08-04 18:03:34 +0300
163
- Processing by DummyController#crash as HTML
164
- Completed 500 Internal Server Error in 0.5ms
165
-
166
- AirbrakeTestError (AirbrakeTestError):
167
- lib/airbrake/rack/middleware.rb:22:in `call'
168
-
169
-
170
- Started GET "/crash" for 127.0.0.1 at 2016-08-04 18:03:34 +0300
171
- Processing by DummyController#crash as HTML
172
- Completed 500 Internal Server Error in 0.2ms
173
-
174
- AirbrakeTestError (AirbrakeTestError):
175
- lib/airbrake/rack/middleware.rb:22:in `call'
176
-
177
-
178
- Started GET "/resque" for 127.0.0.1 at 2016-08-04 18:03:34 +0300
179
- Processing by DummyController#resque as HTML
180
- Rendered dummy/resque.html.erb within layouts/application (0.2ms)
181
- Completed 200 OK in 10.6ms (Views: 0.9ms | ActiveRecord: 0.0ms)
182
- Started GET "/active_record_after_rollback" for 127.0.0.1 at 2016-08-04 18:03:34 +0300
183
- Processing by DummyController#active_record_after_rollback as HTML
184
-  (0.1ms) begin transaction
185
- SQL (0.1ms) INSERT INTO "books" ("title") VALUES (?) [["title", "Bango"]]
186
-  (0.0ms) rollback transaction
187
- #<AirbrakeTestError: after_rollback>
188
- Rendered dummy/active_record_after_rollback.html.erb within layouts/application (0.3ms)
189
- Completed 200 OK in 9.5ms (Views: 1.2ms | ActiveRecord: 0.3ms)
190
- Started GET "/active_record_after_commit" for 127.0.0.1 at 2016-08-04 18:03:34 +0300
191
- Processing by DummyController#active_record_after_commit as HTML
192
-  (0.0ms) begin transaction
193
- SQL (0.1ms) INSERT INTO "books" ("title") VALUES (?) [["title", "Bingo"]]
194
-  (0.0ms) commit transaction
195
- #<AirbrakeTestError: after_commit>
196
- Rendered dummy/active_record_after_commit.html.erb within layouts/application (0.2ms)
197
- Completed 200 OK in 14.0ms (Views: 1.2ms | ActiveRecord: 0.1ms)
198
- Started GET "/crash" for 127.0.0.1 at 2016-08-04 18:03:34 +0300
199
- Processing by DummyController#crash as HTML
200
- Completed 500 Internal Server Error in 0.2ms
201
-
202
- AirbrakeTestError (AirbrakeTestError):
203
- lib/airbrake/rack/middleware.rb:22:in `call'
204
-
205
-
206
- Started GET "/delayed_job" for 127.0.0.1 at 2016-08-04 18:03:34 +0300
207
- Processing by DummyController#delayed_job as HTML
208
- Completed 500 Internal Server Error in 18.2ms
209
-
210
- AirbrakeTestError (delayed_job error):
211
- lib/airbrake/delayed_job/plugin.rb:11:in `block (2 levels) in <class:Airbrake>'
212
- lib/airbrake/rack/middleware.rb:22:in `call'
213
-
214
-
215
- Connecting to database specified by DATABASE_URL
216
-  (0.8ms) select sqlite_version(*)
217
-  (0.2ms) CREATE TABLE "books" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255))
218
-  (0.1ms) CREATE TABLE "delayed_jobs" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "priority" integer DEFAULT 0 NOT NULL, "attempts" integer DEFAULT 0 NOT NULL, "handler" text NOT NULL, "last_error" text, "run_at" datetime, "locked_at" datetime, "failed_at" datetime, "locked_by" varchar(255), "queue" varchar(255), "created_at" datetime, "updated_at" datetime) 
219
-  (0.1ms) CREATE INDEX "delayed_jobs_priority" ON "delayed_jobs" ("priority", "run_at")
220
- Started GET "/active_record_after_rollback" for 127.0.0.1 at 2016-08-10 12:34:57 +0300
221
- Processing by DummyController#active_record_after_rollback as HTML
222
-  (0.1ms) begin transaction
223
- SQL (0.1ms) INSERT INTO "books" ("title") VALUES (?) [["title", "Bango"]]
224
-  (0.0ms) rollback transaction
225
- #<AirbrakeTestError: after_rollback>
226
- Rendered dummy/active_record_after_rollback.html.erb within layouts/application (0.9ms)
227
- Completed 200 OK in 30.2ms (Views: 20.5ms | ActiveRecord: 0.3ms)
228
- Connecting to database specified by DATABASE_URL
229
-  (0.5ms) select sqlite_version(*)
230
-  (0.2ms) CREATE TABLE "books" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255))
231
-  (0.1ms) CREATE TABLE "delayed_jobs" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "priority" integer DEFAULT 0 NOT NULL, "attempts" integer DEFAULT 0 NOT NULL, "handler" text NOT NULL, "last_error" text, "run_at" datetime, "locked_at" datetime, "failed_at" datetime, "locked_by" varchar(255), "queue" varchar(255), "created_at" datetime, "updated_at" datetime) 
232
-  (0.1ms) CREATE INDEX "delayed_jobs_priority" ON "delayed_jobs" ("priority", "run_at")
233
- Started GET "/active_record_after_rollback" for 127.0.0.1 at 2016-08-10 12:35:20 +0300
234
- Processing by DummyController#active_record_after_rollback as HTML
235
-  (0.0ms) begin transaction
236
- SQL (0.1ms) INSERT INTO "books" ("title") VALUES (?) [["title", "Bango"]]
237
-  (0.0ms) rollback transaction
238
- #<AirbrakeTestError: after_rollback>
239
- Rendered dummy/active_record_after_rollback.html.erb within layouts/application (0.7ms)
240
- Completed 200 OK in 29.9ms (Views: 20.9ms | ActiveRecord: 0.3ms)