ember-cli-trackjs
Handles all of the boilerplate shit you need to use TrackJS in your fancy Ember
application.
Settings
Configure TrackJS in your application's config/environment.js
file. Please
see the TrackJS documentation
for specific configuration options.
Example
var ENV = {
trackJs: {
config: {
token: "1234567890"
}
}
};
if (environment === 'test') {
ENV.trackJs.config.enabled = false;
}
See? Pretty much like you'd expect.
One Caveat
TrackJS supports two configuration options that are functions, onError
and
serialize
. These have been a bit problematic (#3, #4) as Ember CLI's
config/environment.js
does not allow you to include function options.
Despite TrackJS' documentation stating that these options cannot be change
after loading, you can, though it's not encouraged. To work around this
problem we can use the configure()
function in an initializer:
export function initialize(application) {
const trackJs = application.container.lookup('service:trackjs');
trackJs.configure({
onError(payload, err) {
if (payload.url && payload.url.indexOf('login') > 0) {
return false;
}
return true;
}
});
}
export default {
name: 'trackjs-error-and-serializer-configuration',
initialize: initialize
}
Yeah, it's not ideal. I'm open to pull requests to make this sexier :)
Usage
A service is exposed on your routes and controllers that you can use to report
errors instead of having to use the global window.trackJs
object, and you
don't want to load TrackJS in all of your environments.
Example in a Route
export default {
beforeModel() {
this.get('trackjs').track('oh, snap. something bad happened');
}
};
Example in a Controller
export default Ember.Controller.extend({
reportSomethingForSomeReason() {
this.get('trackjs').track('oh, snap. something bad happened');
}
});
Example in a Component
export default Ember.Component.extend({
trackjs: Ember.inject.service('trackjs'),
actions: {
doSomething() {
this.get('trackjs').attempt(function(a, b) {
return 5 + 4;
}, this, 5, 4);
}
}
});
Installation
ember install ember-cli-trackjs
Running Tests
npm test
-- the entire test suiteember test --server
-- you're developing a new feature <3
Building