airbrake 3.1.6 → 3.1.7

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 (58) hide show
  1. data/CHANGELOG +116 -0
  2. data/LICENSE +61 -0
  3. data/README.md +28 -478
  4. data/README_FOR_HEROKU_ADDON.md +13 -5
  5. data/Rakefile +26 -103
  6. data/TESTED_AGAINST +6 -0
  7. data/airbrake.gemspec +13 -14
  8. data/features/metal.feature +27 -12
  9. data/features/rack.feature +59 -59
  10. data/features/rails.feature +79 -100
  11. data/features/rails_with_js_notifier.feature +9 -21
  12. data/features/rake.feature +6 -4
  13. data/features/sinatra.feature +32 -6
  14. data/features/step_definitions/file_steps.rb +4 -0
  15. data/features/step_definitions/rack_steps.rb +9 -5
  16. data/features/step_definitions/rails_application_steps.rb +46 -278
  17. data/features/step_definitions/rake_steps.rb +16 -11
  18. data/features/support/airbrake_shim.rb.template +0 -2
  19. data/features/support/aruba.rb +5 -0
  20. data/features/support/env.rb +12 -6
  21. data/features/support/rails.rb +30 -73
  22. data/features/support/rake/Rakefile +1 -2
  23. data/features/user_informer.feature +12 -19
  24. data/generators/airbrake/airbrake_generator.rb +1 -1
  25. data/lib/airbrake.rb +9 -8
  26. data/lib/airbrake/cli/project_factory.rb +6 -3
  27. data/lib/airbrake/configuration.rb +7 -0
  28. data/lib/airbrake/notice.rb +52 -3
  29. data/lib/airbrake/rack.rb +16 -7
  30. data/lib/airbrake/rails/action_controller_catcher.rb +5 -3
  31. data/lib/airbrake/rails/controller_methods.rb +6 -6
  32. data/lib/airbrake/rails/error_lookup.rb +4 -2
  33. data/lib/airbrake/rails/javascript_notifier.rb +7 -3
  34. data/lib/airbrake/rails/middleware.rb +65 -0
  35. data/lib/airbrake/rails3_tasks.rb +16 -21
  36. data/lib/airbrake/railtie.rb +9 -16
  37. data/lib/airbrake/rake_handler.rb +2 -2
  38. data/lib/airbrake/sender.rb +57 -6
  39. data/lib/airbrake/shared_tasks.rb +24 -11
  40. data/lib/airbrake/sinatra.rb +34 -0
  41. data/lib/airbrake/user_informer.rb +9 -0
  42. data/lib/airbrake/version.rb +1 -1
  43. data/lib/rails/generators/airbrake/airbrake_generator.rb +10 -10
  44. data/{test/airbrake_2_3.xsd → resources/airbrake_2_4.xsd} +1 -0
  45. data/resources/airbrake_3_0.json +52 -0
  46. data/test/catcher_test.rb +198 -240
  47. data/test/configuration_test.rb +2 -0
  48. data/test/helper.rb +123 -53
  49. data/test/notice_test.rb +45 -1
  50. data/test/sender_test.rb +63 -32
  51. metadata +60 -79
  52. data/MIT-LICENSE +0 -22
  53. data/SUPPORTED_RAILS_VERSIONS +0 -38
  54. data/TESTING.md +0 -41
  55. data/features/step_definitions/metal_steps.rb +0 -23
  56. data/features/support/terminal.rb +0 -107
  57. data/lib/airbrake/extensions/blank.rb +0 -73
  58. data/lib/airbrake/rails/middleware/exceptions_catcher.rb +0 -33
data/CHANGELOG CHANGED
@@ -1,3 +1,118 @@
1
+ Version 3.1.7 - 2013-01-28 13:35:10 +0100
2
+ ===============================================================================
3
+
4
+ Adam Duke (1):
5
+ fix an error if not using ActionController::Base
6
+
7
+ Ben Arent (2):
8
+ Update to Readme.md
9
+ 2013! woot.
10
+
11
+ Cory Kaufman-Schofield (1):
12
+ Use https for rake airbrake:test if force_ssl set to true (fixes #145)
13
+
14
+ Dmitry Medvinsky (1):
15
+ Fix notifier API URL as per Airbrake docs
16
+
17
+ George Ogata (1):
18
+ Ignore ActionController::UnknownHttpMethod by default.
19
+
20
+ Hrvoje Šimić (59):
21
+ move dependencies from Gemfile
22
+ CI test only for 3.0.0 for now
23
+ use appraisal
24
+ use aruba instead of home-grown terminal
25
+ fix *ALL* the tests!
26
+ remove bundler version
27
+ support all major rails versions for now
28
+ add bundler dependency
29
+ destroy rvmrc
30
+ update appraisals
31
+ add task for bundling bundler
32
+ remove gemfile locks
33
+ update appraisals
34
+ clean up README
35
+ logo is not needed in README
36
+ update the integration tests
37
+ update testing instructions
38
+ use CircleCI for continuous integration
39
+ update rake default task
40
+ mark heroku tests as wip for now
41
+ Clean up the rake task
42
+ stop cluttering STDOUT with trace of rake tasks
43
+ update supported rails versions
44
+ send framework info
45
+ use specific version of builder
46
+ update appraisals
47
+ revert "use specific version of builder"
48
+ remove hard dependency on girl_friday
49
+ update thoughtbot logo
50
+ update test suite to newer Rails versions
51
+ unfreezing version
52
+ More description about development environments
53
+ make sure we don't set env["airbrake.error_id"] for async notices
54
+ stop extending Object, use ActiveSupport instead
55
+ blank? instead of nil? || empty?
56
+ move XSD schema to resources
57
+ enable sending to new JSON API (#163)
58
+ define headers in Sender
59
+ ignore gemfile.locks
60
+ make sending to new JSON API disabled by default (#163)
61
+ don't use named groups in regexes, they are ruby 1.9 only (#162)
62
+ make sure we close the body even if exception occurs (closes #153)
63
+ Rails::Application::Configuration.force_ssl is undefined for Rails 3.0.x
64
+ update the test suite
65
+ update the default rake task
66
+ add the ability to pass a single feature to rake test task
67
+ tests support Rack::BodyProxy now
68
+ use rails 4 compatible routes in tests
69
+ remove unnecessary local variables
70
+ stop with monkeypatchig of Rails exception middleware
71
+ style fixes
72
+ require the new middleware in tests
73
+ better handler for adding Heroku deploy hooks (#167)
74
+ support multiple apps in Heroku deploy hooks task (#166)
75
+ read every available parameter for deploy hook from ENV (#168)
76
+ fallback to reading API key from ENV for deploy hooks
77
+ freshen up Heroku readme
78
+ set username and revision from Heroku variables (#168)
79
+ automatically get remote origin for deploy hooks (#168)
80
+
81
+ Joel Friedlaender (1):
82
+ configuring development environments
83
+
84
+ Jon Evans (1):
85
+ Use "get" instead of "match" for verify route
86
+
87
+ Josh Goebel (1):
88
+ clean_rack_request_data should also filter out "action_dispatch.secret_token" to prevent passing a Rails applications secret token
89
+
90
+ Kyle Wilkinson (1):
91
+ Fix broken gemspec with missing file names. MIT-LICENSE is now just called LICENSE and there is no TESTING.md
92
+
93
+ Manuel Meurer (1):
94
+ Use Airbrake.notify_or_ignore instead of just Airbrake.notify in notify_airbrake controller method
95
+
96
+ Marko Šiftar (3):
97
+ better Sinatra handling
98
+ fix typo
99
+ add framework info for Sinatra and Rack
100
+
101
+ Morgan Mikel McDaris (3):
102
+ fixed the heroku airbrake.rb generation
103
+ fixed the heroku airbrake.rb generation
104
+ made supported versions into a link
105
+
106
+ Pedro Nascimento (1):
107
+ Allow virtual attributes to be used in user data instead of just attributes.
108
+
109
+ Ryan Souza (1):
110
+ Prettier rake exception actions
111
+
112
+ cielavenir (1):
113
+ airbrake_javascript_notifier_options should be externalized
114
+
115
+
1
116
  Version 3.1.6 - 2012-10-23 21:15:50 +0200
2
117
  ===============================================================================
3
118
 
@@ -942,3 +1057,4 @@ Nick Quaranto (3):
942
1057
 
943
1058
 
944
1059
 
1060
+
data/LICENSE ADDED
@@ -0,0 +1,61 @@
1
+ This product includes jquery written by John Resig
2
+ and distributed under an MIT license.
3
+ See https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt
4
+
5
+ Copyright (c) 2011 John Resig, http://jquery.com/
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining
8
+ a copy of this software and associated documentation files (the
9
+ "Software"), to deal in the Software without restriction, including
10
+ without limitation the rights to use, copy, modify, merge, publish,
11
+ distribute, sublicense, and/or sell copies of the Software, and to
12
+ permit persons to whom the Software is furnished to do so, subject to
13
+ the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be
16
+ included in all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+
26
+
27
+ All other components of this product are
28
+ Copyright (c) 2007-2013 Exceptional Software Inc DBA Airbrake.io. All rights reserved.
29
+
30
+ Subject to the terms of this notice, Exceptional Software Inc grants you a
31
+ nonexclusive, nontransferable license, without the right to
32
+ sublicense, to (a) install and execute one copy of these files on any
33
+ number of workstations owned or controlled by you and (b) distribute
34
+ verbatim copies of these files to third parties. As a condition to the
35
+ foregoing grant, you must provide this notice along with each copy you
36
+ distribute and you must not remove, alter, or obscure this notice. All
37
+ other use, reproduction, modification, distribution, or other
38
+ exploitation of these files is strictly prohibited, except as may be set
39
+ forth in a separate written license agreement between you and Exceptional
40
+ Software Inc. The terms of any such license agreement will control over this
41
+ notice. The license stated above will be automatically terminated and
42
+ revoked if you exceed its scope or violate any of the terms of this
43
+ notice.
44
+
45
+ This License does not grant permission to use the trade names,
46
+ trademarks, service marks, or product names of Exceptional Software Inc,
47
+ DBA Airbrake, Exceptional, Airbrake.io, Exceptional.io except as
48
+ required for reasonable and customary use in describing the origin
49
+ of this file and reproducing the content of this notice. You may
50
+ not mark or brand this file with any trade name, trademarks,
51
+ servicemarks, or product names other than the original brand
52
+ (if any)provided by Exceptional.
53
+
54
+ Unless otherwise expressly agreed by Exceptional Software Inc, in a
55
+ separate written license agreement, these files are provided AS IS,
56
+ WITHOUT WARRANTY OF ANY KIND, including without any implied warranties
57
+ of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, or NON-INFRINGEMENT.
58
+ As a condition to your use of these files, you are solely responsible for
59
+ such use. Exceptional Software Inc will have no liability to you for direct,
60
+ indirect, consequential, incidental, special, or punitive damages or
61
+ for lost profits or data.
data/README.md CHANGED
@@ -11,7 +11,7 @@ Help
11
11
 
12
12
  For help with using Airbrake and this notifier visit [our support site](http://help.airbrake.io).
13
13
 
14
- For SSL verification see the [Resources](https://github.com/airbrake/airbrake/blob/master/resources/README.md).
14
+ For **SSL** verification see the [Resources](https://github.com/airbrake/airbrake/blob/master/resources/README.md).
15
15
 
16
16
  Rails Installation
17
17
  ------------------
@@ -31,6 +31,15 @@ That's it!
31
31
 
32
32
  The generator creates a file under `config/initializers/airbrake.rb` configuring Airbrake with your API key. This file should be checked into your version control system so that it is deployed to your staging and production environments.
33
33
 
34
+ The default behaviour of the gem is to only operate in Rails environments that are NOT **development**, **test** & **cucumber**.
35
+
36
+ You can change this by altering this array:
37
+
38
+ config.development_environments = ["development", "test", "cucumber", "custom"]
39
+
40
+ Set it to empty array and it will report errors on all environments.
41
+
42
+
34
43
  ### Rails 2.x
35
44
 
36
45
  Add the airbrake gem to your app. In config/environment.rb:
@@ -52,499 +61,40 @@ every server you deploy to has the gem installed or your application won't start
52
61
 
53
62
  The generator creates a file under `config/initializers/airbrake.rb` configuring Airbrake with your API key. This file should be checked into your version control system so that it is deployed to your staging and production environments.
54
63
 
55
- ### Upgrading From Earlier Versions of Airbrake
56
-
57
- If you're currently using the plugin version (if you have a
58
- vendor/plugins/hoptoad_notifier directory, you are), you'll need to perform a
59
- few extra steps when upgrading to the gem version.
60
-
61
- Add the airbrake gem to your app. In config/environment.rb:
62
-
63
- config.gem 'airbrake'
64
-
65
- Remove the plugin:
66
-
67
- rm -rf vendor/plugins/hoptoad_notifier
68
-
69
- Make sure the following line DOES NOT appear in your ApplicationController file:
70
-
71
- include HoptoadNotifier::Catcher
72
-
73
- If it does, remove it. The new catcher is automatically included by the gem
74
- version of Airbrake.
75
-
76
- Before running the airbrake generator, you need to find your project's API key.
77
- Log in to your account at airbrake.io, and click on the "Projects" button.
78
- Then, find your project in the list, and click on its name. In the left-hand
79
- column, you'll see an "Edit this project" button. Click on that to get your
80
- project's API key. If you accidentally use your personal API auth_token,
81
- you will get API key not found errors, and exceptions will not be stored
82
- by the Airbrake service.
83
-
84
- Then from your project's RAILS_ROOT, run:
85
-
86
- rake gems:install
87
- script/generate airbrake --api-key your_key_here
88
-
89
- Once installed, you should vendor the airbrake gem.
90
-
91
- rake gems:unpack GEM=airbrake
92
-
93
- As always, if you choose not to vendor the airbrake gem, make sure
94
- every server you deploy to has the gem installed or your application won't
95
- start.
96
-
97
- ### Upgrading from Earlier Versions of the Hoptoad Gem (with config.gem)
98
-
99
- If you're currently using the gem version of the hoptoad_notifier and have
100
- a version of Rails that uses config.gem (in the 2.x series), there is
101
- a step or two that you need to do to upgrade. First, you need to remove
102
- the old version of the gem from vendor/gems:
103
-
104
- rm -rf vendor/gems/hoptoad_notifier-X.X.X
105
-
106
- Then you must remove the hoptoad_notifier_tasks.rake file from lib:
107
-
108
- rm lib/tasks/hoptoad_notifier_tasks.rake
109
-
110
- You can then continue to install normally. If you don't remove the rake file,
111
- you will be unable to unpack this gem (Rails will think it's part of the
112
- framework).
113
-
114
-
115
-
116
- You can test that Airbrake is working in your production environment by using
117
- this rake task (from RAILS_ROOT):
118
-
119
- rake airbrake:test
120
-
121
- If everything is configured properly, that task will send a notice to Airbrake
122
- which will be visible immediately.
123
-
124
- ### Removing hoptoad_notifier
125
-
126
- in your ApplicationController, REMOVE this line:
127
-
128
- include HoptoadNotifiable
129
-
130
- In your config/environment* files, remove all references to HoptoadNotifier
131
-
132
- Remove the vendor/plugins/hoptoad_notifier directory.
133
-
134
- ### Remove hoptoad_notifier plugin
135
-
136
- Remove the vendor/plugins/hoptoad_notifier directory before installing the gem, or run:
137
-
138
- script/plugin remove hoptoad_notifier
139
-
140
- Non-rails apps using Bundler
141
- ----------------------------
142
- There is an undocumented dependency in `activesupport` where the `i18n` gem is
143
- required only if the core classes extensions are used (`active_support/core_ext`).
144
- This can lead to a confusing `LoadError` exception when using Airbrake. Until
145
- this is fixed in `activesupport` the workaround is to add `i18n` to the Gemfile
146
- for your Sinatra/Rack/pure ruby application:
147
-
148
- gem 'i18n'
149
- gem 'airbrake'
150
-
151
- Rack
152
- ----
153
-
154
- In order to use airbrake in a non-Rails rack app, just load
155
- airbrake, configure your API key, and use the Airbrake::Rack
156
- middleware:
157
-
158
- require 'rack'
159
- require 'airbrake'
160
-
161
- Airbrake.configure do |config|
162
- config.api_key = 'my_api_key'
163
- end
164
-
165
- app = Rack::Builder.app do
166
- run lambda { |env| raise "Rack down" }
167
- end
168
-
169
- use Airbrake::Rack
170
- run app
171
-
172
- Sinatra
173
- -------
174
-
175
- Using airbrake in a Sinatra app is just like a Rack app:
176
-
177
- require 'sinatra'
178
- require 'airbrake'
179
-
180
- Airbrake.configure do |config|
181
- config.api_key = 'my api key'
182
- end
183
-
184
- use Airbrake::Rack
185
-
186
- get '/' do
187
- raise "Sinatra has left the building"
188
- end
189
-
190
- Usage
191
- -----
192
-
193
- For the most part, Airbrake works for itself.
194
-
195
- It intercepts the exception middleware calls, sends notifications and continues the middleware call chain.
196
-
197
- If you want to log arbitrary things which you've rescued yourself from a
198
- controller, you can do something like this:
199
-
200
- ...
201
- rescue => ex
202
- notify_airbrake(ex)
203
- flash[:failure] = 'Encryptions could not be rerouted, try again.'
204
- end
205
- ...
206
-
207
- The `#notify_airbrake` call will send the notice over to Airbrake for later
208
- analysis. While in your controllers you use the `notify_airbrake` method, anywhere
209
- else in your code, use `Airbrake.notify`.
210
-
211
- To perform custom error processing after Airbrake has been notified, define the
212
- instance method `#rescue_action_in_public_without_airbrake(exception)` in your
213
- controller.
214
-
215
- Rake Tasks
216
- ----------
217
- Do you want Airbrake to report exceptions that happen inside a rake task?
218
-
219
- Airbrake.configure do |config|
220
- ...
221
- config.rescue_rake_exceptions = true
222
- end
223
-
224
- Informing the User
225
- ------------------
226
-
227
- The airbrake gem is capable of telling the user information about the error that just happened
228
- via the user_information option. They can give this error number in bug reports, for example.
229
- By default, if your 500.html contains the text
230
-
231
- <!-- AIRBRAKE ERROR -->
232
-
233
- then that comment will be replaced with the text "Airbrake Error [errnum]". You can modify the text
234
- of the informer by setting `config.user_information`. Airbrake will replace "{{ error_id }}" with the
235
- ID of the error that is returned from Airbrake.
236
-
237
- Airbrake.configure do |config|
238
- ...
239
- config.user_information = "<p>Tell the devs that it was <strong>{{ error_id }}</strong>'s fault.</p>"
240
- end
241
-
242
- You can also turn the middleware that handles this completely off by setting `config.user_information` to false.
243
-
244
- Note that this feature is reading the error id from `env['airbrake.error_id']`. When the exception is caught
245
- automatically in a controller, Airbrake sets that value. If you're, however, calling the Airbrake methods like
246
- `Airbrake#notify` or `Airbrake#notify_or_ignore`, please make sure you set that value. So the proper way of calling the
247
- "manual" methods would be `env['airbrake.error_id'] = Airbrake.notify_or_ignore(...)`.
248
-
249
- Current user information
64
+ Supported frameworks
250
65
  ------------------------
251
- Airbrake provides information about the current logged in user, so you
252
- can easily determine the user who experienced the error in your app.
253
-
254
- It uses `current_user` and `current_member` to identify the
255
- authenticated user, where `current_user` takes precendence.
256
-
257
- If you use different naming, please add the following lines to your
258
- controller:
259
-
260
- alias_method :current_duck, :current_user
261
- helper_method :current_duck
262
-
263
- Voila! You'll get information about a duck that experienced a crash of
264
- your app.
265
-
266
- By default Airbrake collects the following attributes:
267
- * id
268
- * name
269
- * username
270
- * email
271
-
272
- You can also customize attributes that will be collected
273
-
274
- Airbrake.configure do |config|
275
- ...
276
- # collect only user ids
277
- config.user_attributes = [:id] # ["id"] also works
278
- end
279
-
280
- Asynchronous notifications with Airbrake
281
- ----------------------------------------
282
- When your user experiences error using your application, it gets sent to
283
- Airbrake server. This introduces a considerable latency in the response.
284
-
285
- Asynchronous notification sending deals with this problem. Airbrake uses
286
- [girl_friday](https://github.com/mperham/girl_friday) to achieve this
287
- . (thanks Mike)
288
-
289
- It's disabled by default and you can enable it in your Airbrake
290
- configuration.
291
-
292
- Airbrake.configure do |config|
293
- ...
294
- config.async = true
295
- end
296
-
297
- *Note that this feature is enabled with JRuby 1.6+, Rubinius 2.0+ and*
298
- *Ruby 1.9+. It does not support Ruby 1.8 because of its poor threading*
299
- *support.*
300
-
301
- For implementing custom asynchronous notice delivery, send a block to `config.async`. It
302
- receives `notice` param. Pass it to `Airbrake.sender.send_to_airbrake` method
303
- to do actual delivery. In this way it's possible to move Airbrake notification
304
- even in background worker(e.g. Resque or Sidekiq).
305
-
306
- # Thread-based asynchronous send
307
- Airbrake.configure do |config|
308
- ...
309
- config.async do |notice|
310
- Thread.new { Airbrake.sender.send_to_airbrake(notice) }
311
- end
312
- end
313
-
314
- # Resque-like configuration
315
- Airbrake.configure do |config|
316
- ...
317
- config.async do |notice|
318
- Resque.enqueue(AirbrakeDeliveryWorker, notice)
319
- end
320
- end
321
-
322
- Tracking deployments in Airbrake
323
- --------------------------------
324
-
325
- Paying Airbrake plans support the ability to track deployments of your application in Airbrake.
326
- By notifying Airbrake of your application deployments, all errors are resolved when a deploy occurs,
327
- so that you'll be notified again about any errors that reoccur after a deployment.
328
-
329
- Additionally, it's possible to review the errors in Airbrake that occurred before and after a deploy.
330
-
331
- When Airbrake is installed as a gem, you need to add
332
-
333
- require 'airbrake/capistrano'
334
-
335
- to your deploy.rb
336
-
337
- If you don't use Capistrano, then you can use the following rake task from your
338
- deployment process to notify Airbrake:
339
-
340
- rake airbrake:deploy TO=#{rails_env} REVISION=#{current_revision} REPO=#{repository} USER=#{local_user}
341
-
342
- Going beyond exceptions
343
- -----------------------
344
-
345
- You can also pass a hash to `Airbrake.notify` method and store whatever you want,
346
- not just an exception. And you can also use it anywhere, not just in
347
- controllers:
348
-
349
- begin
350
- params = {
351
- # params that you pass to a method that can throw an exception
352
- }
353
- my_unpredicable_method(params)
354
- rescue => e
355
- Airbrake.notify_or_ignore(
356
- :error_class => "Special Error",
357
- :error_message => "Special Error: #{e.message}",
358
- :parameters => params
359
- )
360
- end
361
-
362
- While in your controllers you use the `notify_airbrake` method, anywhere else in
363
- your code, use `Airbrake.notify`. Airbrake will get all the information
364
- about the error itself. As for a hash, these are the keys you should pass:
365
-
366
- * `:error_class` - Use this to group similar errors together. When Airbrake catches an exception it sends the class name of that exception object.
367
- * `:error_message` - This is the title of the error you see in the errors list. For exceptions it is "#{exception.class.name}: #{exception.message}"
368
- * `:parameters` - While there are several ways to send additional data to Airbrake, passing a Hash as :parameters as in the example above is the most common use case. When Airbrake catches an exception in a controller, the actual HTTP client request parameters are sent using this key.
369
-
370
- Airbrake merges the hash you pass with these default options:
371
-
372
- {
373
- :api_key => Airbrake.api_key,
374
- :error_message => 'Notification',
375
- :backtrace => caller,
376
- :parameters => {},
377
- :session => {}
378
- }
379
-
380
- You can override any of those parameters.
381
-
382
- ### Sending shell environment variables when "Going beyond exceptions"
383
-
384
- One common request we see is to send shell environment variables along with
385
- manual exception notification. We recommend sending them along with CGI data
386
- or Rack environment (:cgi_data or :rack_env keys, respectively.)
387
-
388
- See Airbrake::Notice#initialize in lib/airbrake/notice.rb for
389
- more details.
390
66
 
391
- Filtering
392
- ---------
67
+ See **[TESTED_AGAINST](https://github.com/airbrake/airbrake/blob/master/TESTED_AGAINST)** for a full list of frameworks and versions we test against.
393
68
 
394
- You can specify a whitelist of errors that Airbrake will not report on. Use
395
- this feature when you are so apathetic to certain errors that you don't want
396
- them even logged.
397
-
398
- This filter will only be applied to automatic notifications, not manual
399
- notifications (when #notify is called directly).
400
-
401
- Airbrake ignores the following exceptions by default:
402
-
403
- ActiveRecord::RecordNotFound
404
- ActionController::RoutingError
405
- ActionController::InvalidAuthenticityToken
406
- CGI::Session::CookieStore::TamperedWithCookie
407
- ActionController::UnknownAction
408
- AbstractController::ActionNotFound
409
- Mongoid::Errors::DocumentNotFound
410
-
411
-
412
- To ignore errors in addition to those, specify their names in your Airbrake
413
- configuration block.
414
-
415
- Airbrake.configure do |config|
416
- config.api_key = '1234567890abcdef'
417
- config.ignore << "ActiveRecord::IgnoreThisError"
418
- end
419
-
420
- To ignore *only* certain errors (and override the defaults), use the #ignore_only attribute.
421
-
422
- Airbrake.configure do |config|
423
- config.api_key = '1234567890abcdef'
424
- config.ignore_only = ["ActiveRecord::IgnoreThisError"] # or [] to ignore no exceptions.
425
- end
426
-
427
- To ignore certain user agents, add in the #ignore_user_agent attribute as a
428
- string or regexp:
429
-
430
- Airbrake.configure do |config|
431
- config.api_key = '1234567890abcdef'
432
- config.ignore_user_agent << /Ignored/
433
- config.ignore_user_agent << 'IgnoredUserAgent'
434
- end
435
-
436
- To ignore exceptions based on other conditions, use #ignore_by_filter:
437
-
438
- Airbrake.configure do |config|
439
- config.api_key = '1234567890abcdef'
440
- config.ignore_by_filter do |exception_data|
441
- true if exception_data[:error_class] == "RuntimeError"
442
- end
443
- end
444
-
445
- To replace sensitive information sent to the Airbrake service with [FILTERED] use #params_filters:
446
-
447
- Airbrake.configure do |config|
448
- config.api_key = '1234567890abcdef'
449
- config.params_filters << "credit_card_number"
450
- end
451
-
452
- Note that, when rescuing exceptions within an ActionController method,
453
- airbrake will reuse filters specified by #filter_parameter_logging.
454
-
455
- Testing
456
- -------
457
-
458
- When you run your tests, you might notice that the Airbrake service is recording
459
- notices generated using #notify when you don't expect it to. You can
460
- use code like this in your test_helper.rb or spec_helper.rb files to redefine
461
- that method so those errors are not reported while running tests.
462
-
463
- module Airbrake
464
- def self.notify(exception, opts = {})
465
- # do nothing.
466
- end
467
- end
468
-
469
- Proxy Support
470
- -------------
471
-
472
- The notifier supports using a proxy, if your server is not able to directly reach the Airbrake servers. To configure the proxy settings, added the following information to your Airbrake configuration block.
473
-
474
- Airbrake.configure do |config|
475
- config.proxy_host = proxy.host.com
476
- config.proxy_port = 4038
477
- config.proxy_user = foo # optional
478
- config.proxy_pass = bar # optional
479
-
480
- Logging
481
- ------------
482
-
483
- Airbrake uses the logger from your Rails application by default, presumably STDOUT. If you don't like Airbrake scribbling to your
484
- standard output, just pass another `Logger` instance inside your configuration:
485
-
486
- Airbrake.configure do |config|
487
- ...
488
- config.logger = Logger.new("path/to/your/log/file")
489
- end
490
-
491
- Supported Rails versions
69
+ Airbrake wiki pages
492
70
  ------------------------
71
+ Our wiki contains a lot of additional information about Airbrake configuration. Please browse the wiki when finished reading this
72
+ README:
493
73
 
494
- See SUPPORTED_RAILS_VERSIONS for a list of official supported versions of
495
- Rails.
496
-
497
- Please open up a support ticket ( http://help.airbrake.io ) or submit a new github issue
498
- if you're using a version of Rails that is listed above and the notifier is
499
- not working properly.
500
-
501
- Javascript Notifer
502
- ------------------
503
-
504
- To automatically include the Javascript node on every page, use this helper method from your layouts:
505
-
506
- <%= airbrake_javascript_notifier %>
507
-
508
- It's important to insert this very high in the markup, above all other javascript. Example:
509
-
510
- <!DOCTYPE html>
511
- <html>
512
- <head>
513
- <meta charset="utf8">
514
- <%= airbrake_javascript_notifier %>
515
- <!-- more javascript -->
516
- </head>
517
- <body>
518
- ...
519
- </body>
520
- </html>
74
+ https://github.com/airbrake/airbrake/wiki
521
75
 
522
- This helper will automatically use the API key, host, and port specified in the configuration.
76
+ Development
77
+ -----------
523
78
 
524
- The Javascript notifier tends to send much more notifications than the base Rails project.
525
- If you want to receive them into a separate Airbrake project, specify its
526
- API key in the `js_api_key` option.
79
+ We use [Appraisals](https://github.com/thoughtbot/appraisal) to run the tests.
527
80
 
528
- config.js_api_key = 'another-projects-api-key'
81
+ To run the test suite on your machine, you need to run the following commands:
529
82
 
530
- To test the Javascript notifier in development environment, overwrite (temporarily) the development_environments option:
83
+ bundle
84
+ bundle exec rake appraisal:install
531
85
 
532
- Airbrake.configure do |config|
533
- # ...
534
- config.development_environments = []
535
- end
86
+ After this, you're ready to run the suite with:
536
87
 
537
- Development
538
- -----------
88
+ bundle exec rake
539
89
 
540
- See TESTING.md for instructions on how to run the tests.
90
+ This will include cucumber features we use to fully test the integration.
541
91
 
542
92
  Credits
543
93
  -------
544
94
 
545
- ![thoughtbot](http://thoughtbot.com/images/tm/logo.png)
95
+ ![thoughtbot](https://secure.gravatar.com/avatar/a95a04df2dae60397c38c9bd04492c53)
546
96
 
547
- Airbrake is maintained and funded by [airbrake.io](http://airbrake.io)
97
+ Airbrake is maintained and funded by [airbrake.io](http://airbrake.io).
548
98
 
549
99
  Thank you to all [the contributors](https://github.com/airbrake/airbrake/contributors)!
550
100
 
@@ -553,4 +103,4 @@ The names and logos for Airbrake, thoughtbot are trademarks of their respective
553
103
  License
554
104
  -------
555
105
 
556
- Airbrake is Copyright © 2008-2012 Airbrake. It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.
106
+ Airbrake is Copyright © 2008-2012 Airbrake.