airbrake 3.1.6 → 11.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. checksums.yaml +7 -0
  2. data/lib/airbrake.rb +23 -150
  3. data/lib/airbrake/capistrano.rb +6 -42
  4. data/lib/airbrake/capistrano/capistrano2.rb +40 -0
  5. data/lib/airbrake/capistrano/capistrano3.rb +23 -0
  6. data/lib/airbrake/delayed_job.rb +66 -0
  7. data/lib/airbrake/logger.rb +103 -0
  8. data/lib/airbrake/rack.rb +30 -45
  9. data/lib/airbrake/rack/context_filter.rb +65 -0
  10. data/lib/airbrake/rack/http_headers_filter.rb +44 -0
  11. data/lib/airbrake/rack/http_params_filter.rb +27 -0
  12. data/lib/airbrake/rack/instrumentable.rb +136 -0
  13. data/lib/airbrake/rack/middleware.rb +102 -0
  14. data/lib/airbrake/rack/request_body_filter.rb +33 -0
  15. data/lib/airbrake/rack/request_store.rb +34 -0
  16. data/lib/airbrake/rack/route_filter.rb +51 -0
  17. data/lib/airbrake/rack/session_filter.rb +25 -0
  18. data/lib/airbrake/rack/user.rb +74 -0
  19. data/lib/airbrake/rack/user_filter.rb +25 -0
  20. data/lib/airbrake/rails.rb +25 -31
  21. data/lib/airbrake/rails/action_cable.rb +35 -0
  22. data/lib/airbrake/rails/action_cable/notify_callback.rb +22 -0
  23. data/lib/airbrake/rails/action_controller.rb +40 -0
  24. data/lib/airbrake/rails/action_controller_notify_subscriber.rb +32 -0
  25. data/lib/airbrake/rails/action_controller_performance_breakdown_subscriber.rb +51 -0
  26. data/lib/airbrake/rails/action_controller_route_subscriber.rb +33 -0
  27. data/lib/airbrake/rails/active_job.rb +50 -0
  28. data/lib/airbrake/rails/active_record.rb +36 -0
  29. data/lib/airbrake/rails/active_record_subscriber.rb +46 -0
  30. data/lib/airbrake/rails/app.rb +78 -0
  31. data/lib/airbrake/rails/backtrace_cleaner.rb +23 -0
  32. data/lib/airbrake/rails/curb.rb +32 -0
  33. data/lib/airbrake/rails/event.rb +81 -0
  34. data/lib/airbrake/rails/excon_subscriber.rb +25 -0
  35. data/lib/airbrake/rails/http.rb +14 -0
  36. data/lib/airbrake/rails/http_client.rb +16 -0
  37. data/lib/airbrake/rails/net_http.rb +18 -0
  38. data/lib/airbrake/rails/railtie.rb +151 -0
  39. data/lib/airbrake/rails/typhoeus.rb +16 -0
  40. data/lib/airbrake/rake.rb +65 -0
  41. data/lib/airbrake/rake/tasks.rb +112 -0
  42. data/lib/airbrake/resque.rb +61 -0
  43. data/lib/airbrake/shoryuken.rb +54 -0
  44. data/lib/airbrake/sidekiq.rb +55 -0
  45. data/lib/airbrake/sidekiq/retryable_jobs_filter.rb +53 -0
  46. data/lib/airbrake/sneakers.rb +72 -0
  47. data/lib/airbrake/version.rb +5 -1
  48. data/lib/generators/airbrake_generator.rb +25 -0
  49. data/lib/generators/airbrake_initializer.rb.erb +80 -0
  50. metadata +206 -259
  51. data/CHANGELOG +0 -944
  52. data/Gemfile +0 -3
  53. data/Guardfile +0 -6
  54. data/INSTALL +0 -20
  55. data/MIT-LICENSE +0 -22
  56. data/README.md +0 -556
  57. data/README_FOR_HEROKU_ADDON.md +0 -94
  58. data/Rakefile +0 -223
  59. data/SUPPORTED_RAILS_VERSIONS +0 -38
  60. data/TESTING.md +0 -41
  61. data/airbrake.gemspec +0 -40
  62. data/bin/airbrake +0 -12
  63. data/features/metal.feature +0 -18
  64. data/features/rack.feature +0 -60
  65. data/features/rails.feature +0 -272
  66. data/features/rails_with_js_notifier.feature +0 -97
  67. data/features/rake.feature +0 -27
  68. data/features/sinatra.feature +0 -29
  69. data/features/step_definitions/file_steps.rb +0 -10
  70. data/features/step_definitions/metal_steps.rb +0 -23
  71. data/features/step_definitions/rack_steps.rb +0 -23
  72. data/features/step_definitions/rails_application_steps.rb +0 -478
  73. data/features/step_definitions/rake_steps.rb +0 -17
  74. data/features/support/airbrake_shim.rb.template +0 -16
  75. data/features/support/env.rb +0 -18
  76. data/features/support/matchers.rb +0 -35
  77. data/features/support/rails.rb +0 -201
  78. data/features/support/rake/Rakefile +0 -68
  79. data/features/support/terminal.rb +0 -107
  80. data/features/user_informer.feature +0 -63
  81. data/generators/airbrake/airbrake_generator.rb +0 -94
  82. data/generators/airbrake/lib/insert_commands.rb +0 -34
  83. data/generators/airbrake/lib/rake_commands.rb +0 -24
  84. data/generators/airbrake/templates/airbrake_tasks.rake +0 -25
  85. data/generators/airbrake/templates/capistrano_hook.rb +0 -6
  86. data/generators/airbrake/templates/initializer.rb +0 -6
  87. data/install.rb +0 -1
  88. data/lib/airbrake/backtrace.rb +0 -108
  89. data/lib/airbrake/cli/client.rb +0 -68
  90. data/lib/airbrake/cli/options.rb +0 -41
  91. data/lib/airbrake/cli/printer.rb +0 -30
  92. data/lib/airbrake/cli/project.rb +0 -17
  93. data/lib/airbrake/cli/project_factory.rb +0 -36
  94. data/lib/airbrake/cli/runner.rb +0 -48
  95. data/lib/airbrake/cli/validator.rb +0 -8
  96. data/lib/airbrake/configuration.rb +0 -311
  97. data/lib/airbrake/extensions/blank.rb +0 -73
  98. data/lib/airbrake/notice.rb +0 -390
  99. data/lib/airbrake/rails/action_controller_catcher.rb +0 -30
  100. data/lib/airbrake/rails/controller_methods.rb +0 -87
  101. data/lib/airbrake/rails/error_lookup.rb +0 -33
  102. data/lib/airbrake/rails/javascript_notifier.rb +0 -47
  103. data/lib/airbrake/rails/middleware/exceptions_catcher.rb +0 -33
  104. data/lib/airbrake/rails3_tasks.rb +0 -98
  105. data/lib/airbrake/railtie.rb +0 -48
  106. data/lib/airbrake/rake_handler.rb +0 -71
  107. data/lib/airbrake/sender.rb +0 -128
  108. data/lib/airbrake/shared_tasks.rb +0 -47
  109. data/lib/airbrake/tasks.rb +0 -83
  110. data/lib/airbrake/user_informer.rb +0 -27
  111. data/lib/airbrake_tasks.rb +0 -64
  112. data/lib/rails/generators/airbrake/airbrake_generator.rb +0 -100
  113. data/lib/templates/javascript_notifier.erb +0 -15
  114. data/lib/templates/rescue.erb +0 -91
  115. data/rails/init.rb +0 -1
  116. data/resources/README.md +0 -34
  117. data/resources/ca-bundle.crt +0 -3376
  118. data/script/integration_test.rb +0 -38
  119. data/test/airbrake_2_3.xsd +0 -88
  120. data/test/airbrake_tasks_test.rb +0 -170
  121. data/test/backtrace_test.rb +0 -162
  122. data/test/capistrano_test.rb +0 -34
  123. data/test/catcher_test.rb +0 -333
  124. data/test/configuration_test.rb +0 -233
  125. data/test/helper.rb +0 -263
  126. data/test/javascript_notifier_test.rb +0 -51
  127. data/test/logger_test.rb +0 -79
  128. data/test/notice_test.rb +0 -490
  129. data/test/notifier_test.rb +0 -276
  130. data/test/rack_test.rb +0 -58
  131. data/test/rails_initializer_test.rb +0 -36
  132. data/test/recursion_test.rb +0 -10
  133. data/test/sender_test.rb +0 -288
  134. data/test/user_informer_test.rb +0 -29
@@ -1,18 +0,0 @@
1
- Feature: Rescue errors in Rails middleware
2
-
3
- Background:
4
- Given I have built and installed the "airbrake" gem
5
- And I generate a new Rails application
6
- And I configure the Airbrake shim
7
- And I configure my application to require the "airbrake" gem
8
- And I run the airbrake generator with "-k myapikey"
9
-
10
- Scenario: Rescue an exception in the dispatcher
11
- When I define a Metal endpoint called "Exploder":
12
- """
13
- def self.call(env)
14
- raise "Explode"
15
- end
16
- """
17
- When I perform a request to "http://example.com:123/metal/index?param=value"
18
- Then I should receive a Airbrake notification
@@ -1,60 +0,0 @@
1
- Feature: Use the notifier in a plain Rack app
2
-
3
- Background:
4
- Given I have built and installed the "airbrake" gem
5
-
6
- Scenario: Rescue and exception in a Rack app
7
- Given the following Rack app:
8
- """
9
- require 'logger'
10
- require 'rack'
11
- require 'airbrake'
12
-
13
- Airbrake.configure do |config|
14
- config.api_key = 'my_api_key'
15
- config.logger = Logger.new STDOUT
16
- end
17
-
18
- app = Rack::Builder.app do
19
- use Airbrake::Rack
20
- run lambda { |env| raise "Rack down" }
21
- end
22
- """
23
- When I perform a Rack request to "http://example.com:123/test/index?param=value"
24
- Then I should receive a Airbrake notification
25
-
26
- Scenario: Ignore user agents
27
- Given the following Rack app:
28
- """
29
- require 'logger'
30
- require 'rack'
31
- require 'airbrake'
32
-
33
- Airbrake.configure do |config|
34
- config.api_key = 'my_api_key'
35
- config.ignore_user_agent << /ignore/
36
- config.logger = Logger.new STDOUT
37
- end
38
-
39
- class Mock
40
- class AppendUserAgent
41
- def initialize(app)
42
- @app = app
43
- end
44
-
45
- def call(env)
46
- env["HTTP_USER_AGENT"] = "ignore"
47
- @app.call(env)
48
- end
49
- end
50
- end
51
-
52
- app = Rack::Builder.app do
53
- use Airbrake::Rack
54
- use Mock::AppendUserAgent
55
- run lambda { |env| raise "Rack down" }
56
- end
57
- """
58
- When I perform a Rack request to "http://example.com:123/test/index?param=value"
59
- Then I should not see "** [Airbrake] Response from Airbrake:"
60
-
@@ -1,272 +0,0 @@
1
- Feature: Install the Gem in a Rails application
2
-
3
- Background:
4
- Given I have built and installed the "airbrake" gem
5
- And I generate a new Rails application
6
-
7
- Scenario: Use the gem without vendoring the gem in a Rails application
8
- When I configure the Airbrake shim
9
- And I configure my application to require the "airbrake" gem
10
- And I run the airbrake generator with "-k myapikey"
11
- Then the command should have run successfully
12
- And I should receive a Airbrake notification
13
- And I should see the Rails version
14
-
15
- Scenario: vendor the gem and uninstall
16
- When I configure the Airbrake shim
17
- And I configure my application to require the "airbrake" gem
18
- And I unpack the "airbrake" gem
19
- And I run the airbrake generator with "-k myapikey"
20
- Then the command should have run successfully
21
- When I uninstall the "airbrake" gem
22
- And I install cached gems
23
- And I run "rake airbrake:test"
24
- Then I should see "** [Airbrake] Response from Airbrake:"
25
- And I should receive two Airbrake notifications
26
-
27
- Scenario: Configure the notifier by hand
28
- When I configure the Airbrake shim
29
- And I configure the notifier to use "myapikey" as an API key
30
- And I configure my application to require the "airbrake" gem
31
- And I run the airbrake generator with ""
32
- Then I should receive a Airbrake notification
33
-
34
- Scenario: Configuration within initializer isn't overridden by Railtie
35
- When I configure the Airbrake shim
36
- And I configure usage of Airbrake
37
- Then the command should have run successfully
38
- When I configure the notifier to use the following configuration lines:
39
- """
40
- config.api_key = "myapikey"
41
- config.project_root = "argle/bargle"
42
- """
43
- And I define a response for "TestController#index":
44
- """
45
- session[:value] = "test"
46
- raise RuntimeError, "some message"
47
- """
48
- And I route "/test/index" to "test#index"
49
- And I perform a request to "http://example.com:123/test/index?param=value"
50
- Then I should receive a Airbrake notification
51
-
52
- Scenario: Try to install without an api key
53
- When I configure my application to require the "airbrake" gem
54
- And I run the airbrake generator with ""
55
- Then I should see "Must pass --api-key or --heroku or create config/initializers/airbrake.rb"
56
-
57
- Scenario: Configure and deploy using only installed gem
58
- When I run "capify ."
59
- And I configure the Airbrake shim
60
- And I configure my application to require the "airbrake" gem
61
- And I run the airbrake generator with "-k myapikey"
62
- And I configure my application to require the "capistrano" gem if necessary
63
- And I run "cap -T"
64
- Then I should see "airbrake:deploy"
65
-
66
- Scenario: Configure and deploy using only vendored gem
67
- When I run "capify ."
68
- And I configure the Airbrake shim
69
- And I configure my application to require the "airbrake" gem
70
- And I unpack the "airbrake" gem
71
- And I run the airbrake generator with "-k myapikey"
72
- And I uninstall the "airbrake" gem
73
- And I install cached gems
74
- And I configure my application to require the "capistrano" gem if necessary
75
- And I run "cap -T"
76
- Then I should see "airbrake:deploy"
77
-
78
- Scenario: Try to install when the airbrake plugin still exists
79
- When I install the "airbrake" plugin
80
- And I configure the Airbrake shim
81
- And I configure the notifier to use "myapikey" as an API key
82
- And I configure my application to require the "airbrake" gem
83
- And I run the airbrake generator with ""
84
- Then I should see "You must first remove the airbrake plugin. Please run: script/plugin remove airbrake"
85
-
86
- Scenario: Rescue an exception in a controller
87
- When I configure the Airbrake shim
88
- And I configure usage of Airbrake
89
- And I define a response for "TestController#index":
90
- """
91
- session[:value] = "test"
92
- raise RuntimeError, "some message"
93
- """
94
- And I route "/test/index" to "test#index"
95
- And I perform a request to "http://example.com:123/test/index?param=value"
96
- Then I should receive a Airbrake notification
97
- Then I should see "test"
98
-
99
- Scenario: The gem should not be considered a framework gem
100
- When I configure the Airbrake shim
101
- And I configure my application to require the "airbrake" gem
102
- And I run the airbrake generator with "-k myapikey"
103
- And I run "rake gems"
104
- Then I should see that "airbrake" is not considered a framework gem
105
-
106
- Scenario: The app uses Vlad instead of Capistrano
107
- When I configure the Airbrake shim
108
- And I configure my application to require the "airbrake" gem
109
- And I run "touch config/deploy.rb"
110
- And I run "rm Capfile"
111
- And I run the airbrake generator with "-k myapikey"
112
- Then "config/deploy.rb" should not contain "capistrano"
113
-
114
- Scenario: Support the Heroku addon in the generator
115
- When I configure the Airbrake shim
116
- And I configure the Heroku rake shim
117
- And I configure the Heroku gem shim with "myapikey"
118
- And I configure my application to require the "airbrake" gem
119
- And I run the airbrake generator with "--heroku"
120
- Then the command should have run successfully
121
- And I should receive a Airbrake notification
122
- And I should see the Rails version
123
- And my Airbrake configuration should contain the following line:
124
- """
125
- config.api_key = ENV['HOPTOAD_API_KEY']
126
- """
127
-
128
- Scenario: Support the --app option for the Heroku addon in the generator
129
- When I configure the Airbrake shim
130
- And I configure the Heroku rake shim
131
- And I configure the Heroku gem shim with "myapikey" and multiple app support
132
- And I configure my application to require the "airbrake" gem
133
- And I run the airbrake generator with "--heroku -a myapp"
134
- Then the command should have run successfully
135
- And I should receive a Airbrake notification
136
- And I should see the Rails version
137
- And my Airbrake configuration should contain the following line:
138
- """
139
- config.api_key = ENV['HOPTOAD_API_KEY']
140
- """
141
-
142
- Scenario: Filtering parameters in a controller
143
- When I configure the Airbrake shim
144
- And I configure usage of Airbrake
145
- When I configure the notifier to use the following configuration lines:
146
- """
147
- config.api_key = "myapikey"
148
- config.params_filters << "credit_card_number"
149
- """
150
- And I define a response for "TestController#index":
151
- """
152
- params[:credit_card_number] = "red23"
153
- raise RuntimeError, "some message"
154
- """
155
- And I route "/test/index" to "test#index"
156
- And I perform a request to "http://example.com:123/test/index?param=value"
157
- Then I should receive a Airbrake notification
158
- Then I should not see "red23"
159
- And I should see "FILTERED"
160
-
161
- Scenario: Filtering session in a controller
162
- When I configure the Airbrake shim
163
- And I configure usage of Airbrake
164
- When I configure the notifier to use the following configuration lines:
165
- """
166
- config.api_key = "myapikey"
167
- config.params_filters << "secret"
168
- """
169
- And I define a response for "TestController#index":
170
- """
171
- session["secret"] = "blue42"
172
- raise RuntimeError, "some message"
173
- """
174
- And I route "/test/index" to "test#index"
175
- And I perform a request to "http://example.com:123/test/index?param=value"
176
- Then I should receive a Airbrake notification
177
- Then I should not see "blue42"
178
- And I should see "FILTERED"
179
-
180
- Scenario: Filtering session and params based on Rails parameter filters
181
- When I configure the Airbrake shim
182
- And I configure usage of Airbrake
183
- And I configure the application to filter parameter "secret"
184
- And I define a response for "TestController#index":
185
- """
186
- params["secret"] = "red23"
187
- session["secret"] = "blue42"
188
- raise RuntimeError, "some message"
189
- """
190
- And I route "/test/index" to "test#index"
191
- And I perform a request to "http://example.com:123/test/index?param=value"
192
- Then I should receive a Airbrake notification
193
- And I should not see "red23"
194
- And I should not see "blue42"
195
- And I should see "FILTERED"
196
-
197
- Scenario: Notify airbrake within the controller
198
- When I configure the Airbrake shim
199
- And I configure usage of Airbrake
200
- And I define a response for "TestController#index":
201
- """
202
- session[:value] = "test"
203
- notify_airbrake(RuntimeError.new("some message"))
204
- render :nothing => true
205
- """
206
- And I route "/test/index" to "test#index"
207
- And I perform a request to "http://example.com:123/test/index?param=value"
208
- Then I should receive a Airbrake notification
209
- And I should see "test"
210
-
211
- Scenario: Reporting 404s should be disabled by default
212
- When I configure the Airbrake shim
213
- And I configure usage of Airbrake
214
- And I perform a request to "http://example.com:123/this/route/does/not/exist"
215
- Then I should see "The page you were looking for doesn't exist."
216
- And I should not receive a Airbrake notification
217
-
218
- Scenario: Reporting 404s should work when configured properly
219
- When I configure the Airbrake shim
220
- And I configure usage of Airbrake
221
- When I configure the notifier to use the following configuration lines:
222
- """
223
- config.ignore_only = []
224
- """
225
- And I perform a request to "http://example.com:123/this/route/does/not/exist"
226
- Then I should see "The page you were looking for doesn't exist."
227
- And I should receive a Airbrake notification
228
-
229
- Scenario: reporting over SSL with utf8 check should work
230
- Given PENDING I fix this one
231
- When I configure the Airbrake shim
232
- And I configure usage of Airbrake
233
- When I configure the notifier to use the following configuration lines:
234
- """
235
- config.secure = true
236
- """
237
- And I define a response for "TestController#index":
238
- """
239
- raise RuntimeError, "some message"
240
- """
241
- And I route "/test/index" to "test#index"
242
- And I perform a request to "http://example.com:123/test/index?utf8=✓"
243
- Then I should receive a Airbrake notification
244
-
245
- Scenario: It should also send the user details
246
- When I configure the Airbrake shim
247
- And I configure usage of Airbrake
248
- And I define a response for "TestController#index":
249
- """
250
- raise RuntimeError, "some message"
251
- """
252
- And I route "/test/index" to "test#index"
253
- And I have set up authentication system in my app that uses "current_user"
254
- And I perform a request to "http://example.com:123/test/index"
255
- Then I should receive a Airbrake notification
256
- And the Airbrake notification should contain user details
257
- When I have set up authentication system in my app that uses "current_member"
258
- And I perform a request to "http://example.com:123/test/index"
259
- Then I should receive a Airbrake notification
260
- And the Airbrake notification should contain user details
261
-
262
- Scenario: It should log the notice when failure happens
263
- When Airbrake server is not responding
264
- And I configure usage of Airbrake
265
- And I define a response for "TestController#index":
266
- """
267
- raise RuntimeError, "some message"
268
- """
269
- And I route "/test/index" to "test#index"
270
- And I perform a request to "http://example.com:123/test/index?param=value"
271
- Then I should see "Notice details:"
272
- And I should see "some message"
@@ -1,97 +0,0 @@
1
- Feature: Install the Gem in a Rails application and enable the JavaScript notifier
2
-
3
- Background:
4
- Given I have built and installed the "airbrake" gem
5
-
6
- Scenario: Include the Javascript notifier when enabled
7
- When I generate a new Rails application
8
- And I configure the Airbrake shim
9
- And I configure my application to require the "airbrake" gem
10
- When I configure the notifier to use the following configuration lines:
11
- """
12
- config.api_key = "myapikey"
13
- """
14
- And I define a response for "TestController#index":
15
- """
16
- render :inline => '<html><head profile="http://example.com"><%= airbrake_javascript_notifier %></head><body></body></html>'
17
- """
18
- And I route "/test/index" to "test#index"
19
- And I perform a request to "http://example.com:123/test/index"
20
- Then I should see the notifier JavaScript for the following:
21
- | api_key | environment | host |
22
- | myapikey | production | api.airbrake.io |
23
- And the notifier JavaScript should provide the following errorDefaults:
24
- | url | component | action |
25
- | http://example.com:123/test/index | test | index |
26
-
27
- Scenario: Include the Javascript notifier when enabled using custom configuration settings
28
- When I generate a new Rails application
29
- And I configure the Airbrake shim
30
- And I configure my application to require the "airbrake" gem
31
- When I configure the notifier to use the following configuration lines:
32
- """
33
- config.api_key = "myapikey!"
34
- config.host = "myairbrake.com"
35
- config.port = 3001
36
- """
37
- And I define a response for "TestController#index":
38
- """
39
- render :inline => '<html><head><%= airbrake_javascript_notifier %></head><body></body></html>'
40
- """
41
- And I route "/test/index" to "test#index"
42
- And I perform a request to "http://example.com:123/test/index"
43
- Then I should see the notifier JavaScript for the following:
44
- | api_key | environment | host |
45
- | myapikey! | production | myairbrake.com:3001 |
46
-
47
- Scenario: Don't include the Javascript notifier by default
48
- When I generate a new Rails application
49
- And I configure the Airbrake shim
50
- And I configure my application to require the "airbrake" gem
51
- When I configure the notifier to use the following configuration lines:
52
- """
53
- config.api_key = "myapikey!"
54
- """
55
- And I define a response for "TestController#index":
56
- """
57
- render :inline => "<html><head></head><body></body></html>"
58
- """
59
- And I route "/test/index" to "test#index"
60
- And I perform a request to "http://example.com:123/test/index"
61
- Then I should not see notifier JavaScript
62
-
63
- Scenario: Don't include the Javascript notifier when enabled in non-public environments
64
- When I generate a new Rails application
65
- And I configure the Airbrake shim
66
- And I configure my application to require the "airbrake" gem
67
- When I configure the notifier to use the following configuration lines:
68
- """
69
- config.api_key = "myapikey!"
70
- config.environment_name = 'test'
71
- """
72
- And I define a response for "TestController#index":
73
- """
74
- render :inline => '<html><head><%= airbrake_javascript_notifier %></head><body></body></html>'
75
- """
76
- And I route "/test/index" to "test#index"
77
- And I perform a request to "http://example.com:123/test/index" in the "test" environment
78
- Then I should not see notifier JavaScript
79
-
80
- Scenario: Include the Javascript notifier with a custom api key
81
- When I generate a new Rails application
82
- And I configure the Airbrake shim
83
- And I configure my application to require the "airbrake" gem
84
- When I configure the notifier to use the following configuration lines:
85
- """
86
- config.api_key = "myapikey!"
87
- config.js_api_key = "myjsapikey!"
88
- """
89
- And I define a response for "TestController#index":
90
- """
91
- render :inline => '<html><head><%= airbrake_javascript_notifier %></head><body></body></html>'
92
- """
93
- And I route "/test/index" to "test#index"
94
- And I perform a request to "http://example.com:123/test/index"
95
- Then I should see the notifier JavaScript for the following:
96
- | api_key | environment | host |
97
- | myjsapikey! | production | api.airbrake.io |