Ember Rollbar Client Logo Dependency Status Gitter
The Rollbar client for EmberJS applications.
This one just works!
- Automatic logger for:
js windowerrorsembererrors
- No
Bowerdependency - Fastboot compatible
- Practical wrapper with access to pure
Rollbar - Compatible with Ember 3.8 and up
- Ember.js v3.8 or above
- Ember CLI v2.13 or above
- Node.js v10 or above
ember install ember-rollbar-client- Add your
accessTokeninconfig/environment.js
module.exports = function(environment) { var ENV = { emberRollbarClient: { accessToken: 'rollbar-write-client-token', // By default Rollbar logging is enabled in every environment except test and development. // Here is an example if you want to use it only in production enabled: environment === 'production' } }; return ENV; }
In your component, controller, route, object (or whatever) you can inject the rollbar service, eg:
import Ember from 'ember'; const { Component, inject } = Ember; export default Component.extend({ rollbar: inject.service() });
And then you can use following API to log errors:
this.get('rollbar').critical(message, data = {}) this.get('rollbar').error(message, data = {}) this.get('rollbar').warning(message, data = {}) this.get('rollbar').info(message, data = {}) this.get('rollbar').debug(message, data = {})
To set current user use just a normal setter in your session service:
this.set('rollbar.currentUser', { email: 'user@email.com', id: 66 })
If you can not find in our API a proper wrapper, you can always use the current Rollbar instance:
this.get('rollbar.notifier')
Create the following instance initializer in your app:
// app/instance-initializer/rsvp-error-handler.js import RSVP from "rsvp"; export function initialize(appInstance) { let rollbarService = appInstance.lookup('service:rollbar'); RSVP.on('error', function(reason) { rollbarService.error(reason); }); } export default { name: 'rsvp-error-handler', initialize };
You can use rollbarClient function of the Rollbar Service to create a new instance of Rollbar notifier. Optionally you can pass your own config.
this.get('rollbar').rollbarClient(/* config */)
Add at the bottom of your config/environment.js file:
// Heroku Git Hash support if (process.env.SOURCE_VERSION) { let packageJson = require('../package.json'); let gitHash = process.env.SOURCE_VERSION.substr(0, 7); ENV.emberRollbarClient.payload.client.javascript['code_version'] = `${packageJson.version}+${gitHash}`; }
You can overwrite Rollbar configuration in environment's config. Here is the default config:
'emberRollbarClient': { enabled: environment !== 'test' && environment !== 'development', accessToken: '', verbose: true, captureUncaught: environment !== 'test', captureUnhandledRejections: environment !== 'test', payload: { environment: environment, client: { javascript: { source_map_enabled: true, guess_uncaught_frames: true code_version: "YOUR_APP_VERSION" // returns app version in format: 2.4.0+06df23a // leave empty to use application version which is a default value } } } };
See the Contributing guide for details.
This project is licensed under the MIT License.