Commit 666ce5515732554769af38a50f32f02cb94b2891
1 parent
a0929bc8
Exists in
master
#1044 support and document the airbrake-js xhr reporter
Showing
4 changed files
with
17 additions
and
7 deletions
Show diff stats
README.md
| ... | ... | @@ -243,17 +243,20 @@ This tab will be hidden if no user information is available. |
| 243 | 243 | |
| 244 | 244 | Javascript error notifications |
| 245 | 245 | -------------------------------------- |
| 246 | - | |
| 247 | 246 | You can log javascript errors that occur in your application by including the |
| 248 | 247 | [airbrake-js](https://github.com/airbrake/airbrake-js) javascript library. |
| 249 | 248 | |
| 250 | -Install airbrake-js according to the docs at | |
| 251 | -[airbrake-js](https://github.com/airbrake/airbrake-js) and set your project and | |
| 252 | -host as early as possible: | |
| 249 | +Install airbrake-js according to the docs at and set your project and host as | |
| 250 | +soon as you want to start reporting errors. Then follow along with the | |
| 251 | +documentation at https://github.com/airbrake/airbrake-js/blob/master/README.md | |
| 253 | 252 | |
| 254 | 253 | ```javascript |
| 255 | -Airbrake.setProject("ERRBIT API KEY", "ERRBIT API KEY"); | |
| 256 | -Airbrake.setHost("http://errbit.yourdomain.com"); | |
| 254 | +var airbrake = new airbrakeJs.Client({ | |
| 255 | + projectId: 'ERRBIT API KEY', | |
| 256 | + projectKey: 'ERRBIT API KEY (again)', | |
| 257 | + reporter: 'xhr', | |
| 258 | + host: 'https://myerrbit.com' | |
| 259 | +}); | |
| 257 | 260 | ``` |
| 258 | 261 | |
| 259 | 262 | Plugins and Integrations | ... | ... |
app/controllers/api/v3/notices_controller.rb
| ... | ... | @@ -10,6 +10,7 @@ class Api::V3::NoticesController < ApplicationController |
| 10 | 10 | def create |
| 11 | 11 | response.headers['Access-Control-Allow-Origin'] = '*' |
| 12 | 12 | response.headers['Access-Control-Allow-Headers'] = 'origin, content-type, accept' |
| 13 | + return render(status: 200, text: '') if request.method == 'OPTIONS' | |
| 13 | 14 | |
| 14 | 15 | report = AirbrakeApi::V3::NoticeParser.new( |
| 15 | 16 | params.merge(JSON.parse(request.raw_post) || {})).report | ... | ... |
config/routes.rb
| ... | ... | @@ -64,7 +64,7 @@ Rails.application.routes.draw do |
| 64 | 64 | end |
| 65 | 65 | |
| 66 | 66 | match '/api/v3/projects/:project_id/create-notice' => 'api/v3/notices#create', via: [:post] |
| 67 | - match '/api/v3/projects/:project_id/notices' => 'api/v3/notices#create', via: [:post] | |
| 67 | + match '/api/v3/projects/:project_id/notices' => 'api/v3/notices#create', via: [:post, :options] | |
| 68 | 68 | |
| 69 | 69 | root to: 'apps#index' |
| 70 | 70 | end | ... | ... |
spec/controllers/api/v3/notices_controller_spec.rb
| ... | ... | @@ -12,6 +12,12 @@ describe Api::V3::NoticesController, type: :controller do |
| 12 | 12 | expect(response.headers['Access-Control-Allow-Headers']).to eq('origin, content-type, accept') |
| 13 | 13 | end |
| 14 | 14 | |
| 15 | + it 'responds to an OPTIONS request' do | |
| 16 | + process :create, 'OPTIONS', project_id: 'nothingspecial' | |
| 17 | + expect(response.headers['Access-Control-Allow-Origin']).to eq('*') | |
| 18 | + expect(response.headers['Access-Control-Allow-Headers']).to eq('origin, content-type, accept') | |
| 19 | + end | |
| 20 | + | |
| 15 | 21 | it 'returns created notice id in json format' do |
| 16 | 22 | post :create, legit_body, legit_params |
| 17 | 23 | notice = Notice.last | ... | ... |