Use TrackJS with Your Fancy Ember CLI App
JavaScript HTML
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
addon
app
blueprints/ember-cli-trackjs
config
tests
.bowerrc
.editorconfig
.ember-cli
.eslintrc.js
.gitignore
.npmignore
.travis.yml
.watchmanconfig
LICENSE.md
README.md
UPGRADE.md
bower.json
ember-cli-build.js
index.js
package-lock.json
package.json
testem.js
yarn.lock

README.md

ember-cli-trackjs npm version Build Status Dependency Status Ember Observer Score

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:

// 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 :)

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() {
      // Let's use some other part of the TrackJS API
      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 suite
  • ember test --server -- you're developing a new feature <3

Building

  • ember build