Handles all of the boilerplate shit you need to use TrackJS in your fancy Ember application.
Configure TrackJS in your application's config/environment.js
file. Please
see the TrackJS documentation
for specific configuration options.
var ENV = {
trackJs: {
config: {
token: "1234567890"
}
}
};
if (environment === 'test') {
ENV.trackJs.config.enabled = false;
}
See? Pretty much like you'd expect.
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:
// app/instance-initializers/configure-trackjs.js
export function initialize(application) {
const trackJs = application.container.lookup('service:trackjs');
trackJs.configure({
onError(payload, err) {
// exclude errors from log in page
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 :)
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.
export default {
beforeModel() {
this.get('trackjs').track('oh, snap. something bad happened');
}
};
export default Ember.Controller.extend({
reportSomethingForSomeReason() {
this.get('trackjs').track('oh, snap. something bad happened');
}
});
export default Ember.Component.extend({
trackjs: Ember.inject.service('trackjs'),
actions: {
doSomething() {
// Let's use some other part of the TrackJS API
this.get('trackjs').attempt(function(a, b) {
return 5 + 4;
}, this, 5, 4);
}
}
});
ember install ember-cli-trackjs
npm test
-- the entire test suiteember test --server
-- you're developing a new feature <3
ember build