Squashed commit of the following:

commit 30b6cc470691132c4bd6a1178abc629f3d4d6b9e
Merge: f4d9d06 86fb607
Author: Gord Pearson <gord.pearson@toushay.com>
Date:   Thu Feb 27 17:52:37 2014 -0500

    Merge branch 'master' of github.com:stefanpenner/ember-app-kit into g_feb_27

    Conflicts:
    	.jshintrc
    	Gruntfile.js
    	app/app.js
    	app/index.html
    	app/routes/component-test.js
    	app/routes/helper-test.js
    	bower.json
    	package.json
    	tasks/express-server.js
    	tasks/helpers.js
    	tasks/options/testem.js
    	tasks/options/watch.js
    	testem.json
    	tests/acceptance/component-test.js
    	tests/acceptance/helper-test.js
    	tests/acceptance/index-test.js
    	tests/helpers/isolated_container.js

commit 86fb6073d01945b0c4252d88f15a88787fd90c8a
Merge: 20329c8 4afd4f4
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Wed Feb 26 21:33:28 2014 -0600

    Merge pull request #518 from existentialism/patch-1

    Fixed minor comment typo

commit 4afd4f4219c894a02b2ae48b18fd974f86a80408
Author: Brian Ng <bng412@gmail.com>
Date:   Wed Feb 26 21:32:40 2014 -0600

    Fixed minor comment typo

commit 20329c8741072386d0fcd861cdd4e36327e4f9bb
Merge: 8051ada 3a10156
Author: Robert Jackson <robert.w.jackson@me.com>
Date:   Fri Feb 21 12:17:37 2014 -0500

    Merge pull request #507 from bradfol/update

    Update to Ember 1.4.0 and Ember Data 1.0.0-beta.7

commit 3a10156010a66f08a2e67711bf4d48de95bae143
Author: Brad Fol <brad.fol@runtriz.com>
Date:   Fri Feb 21 09:00:29 2014 -0800

    Update to Ember 1.4.0 and Ember Data 1.0.0-beta.7

commit 8051ada2b7d61ca3809da004e65873b24d5f3d51
Merge: a5170b6 4f17691
Author: Robert Jackson <robert.w.jackson@me.com>
Date:   Thu Feb 20 20:20:07 2014 -0500

    Merge pull request #506 from jayphelps/resolver-rename

    jj-abrams-resolver now lives under the module name "ember/resolver"

commit 4f176915e0eb92b599025661aba3a8bf22145e18
Author: Jay Phelps <hello@jayphelps.com>
Date:   Thu Feb 20 17:04:25 2014 -0800

    jj-abrams-resolver now lives under the module name "ember/resolver" per stefanpenner/ember-jj-abrams-resolver#27

commit a5170b6e98067d2e3a08fe6d19ef82350e89688c
Merge: 036df2e e46fd7e
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Wed Feb 19 10:31:59 2014 -0500

    Merge pull request #504 from alisdair/master

    Fix test loader for dasherized file names.

commit e46fd7eb7d2040145d3aab2fe0e097856c4de20d
Author: Alisdair McDiarmid <alisdair@mcdiarmid.org>
Date:   Wed Feb 19 10:29:13 2014 +0000

    Fix test loader for dasherized file names.

    Commit 036df2e2c00aee broke the test loader so that no test modules were
    found or loaded, and no tests run.

commit 036df2e2c00aeef96a5178ab30cbc374bc9e4dfb
Merge: 2f2fca1 2107e7e
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Feb 17 17:53:21 2014 -0500

    Merge pull request #501 from MajorBreakfast/master

    Dasherize all file names

commit 2107e7e20aa4725aae03a66caf66962345cc0192
Author: Josef Brandl <mail@josefbrandl.de>
Date:   Mon Feb 17 22:07:20 2014 +0100

    Dasherize all file names

commit 2f2fca17881b9f2444d418ccc2d33e3dcbae34c4
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sat Feb 15 10:56:06 2014 -0500

    [Fixes #490, #488] restore run-time cycle support to the loader.

    This does so, while continue to support good error handling semantics.
    If the module failed to load, previously it would not fail to load the second time, merely become the empty SEEN object. This results in very crappy debugging experiences.

    Also, wrapping the experience in a try/catch would cause different but equally as terrible experiences.

    So this solution utilizes a try/finally to correctly set and track state of modules.
    Please note, that if an error occurs while loading a module in IE8, it will fail due to no "catch" being present in the try/finally block. But this trade-off seems fair.

commit 37301034e9855c29a84a57dae9391b92268f8182
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Fri Feb 14 19:53:06 2014 -0500

    re-enable run-time cycles.

    Please note this does NOT (and will not) address design time module cycles.

commit 51b6075eb97cc22df2ad26b215b2e0cef2e6319a
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Fri Feb 14 19:18:18 2014 -0500

    tidy up loader.js

commit 4d8ca0de93b66f0be1975cc2d96b4d599d782b35
Merge: 708323d da909c0
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sun Feb 9 13:37:27 2014 -0500

    Merge pull request #480 from fsmanuel/fix_module_for_model

    fixes moduleForModel

commit da909c0de88c3b2fbc3f0fae4a98cd8b0bbc7961
Author: Manuel Wiedenmann <manuel@funkensturm.de>
Date:   Sun Feb 9 14:50:26 2014 +0100

    replaces factory with name

commit 2729c4268dc2b79cd27cac591dd9db29e0a2712f
Author: Manuel Wiedenmann <manuel@funkensturm.de>
Date:   Sat Feb 8 17:18:19 2014 +0100

    fixes moduleForModel

commit 708323dc9c6dddadb629f8878347027d5821b338
Merge: a59c1ba 54e4457
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Fri Feb 7 16:00:09 2014 -0500

    Merge pull request #478 from jas/master

    Testing: use fullName if module doesn't have description

commit 54e4457a96c8f6a70af9d9bc1fc3b4b2810dafca
Author: Jason Sandmeyer <jasandmeyer@me.com>
Date:   Fri Feb 7 15:53:12 2014 -0500

    Testing: use fullName if module doesn't have description

commit a59c1baf4d11f17fbcaa9d766dba00208747b29f
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Fri Feb 7 08:28:48 2014 -0500

    [Bugfix test-helpers] fix regression introduced by28af52165084c8890a277332a4c4725c671ae6f9 , which prevented template less components from being testable

commit 28af52165084c8890a277332a4c4725c671ae6f9
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Fri Feb 7 07:49:21 2014 -0500

    [Bugfix  test-helpers] components should have the correct template

commit a6af2db995671718cddc3d5f1fbda5a6500c08f2
Merge: 075a2ec 4093b8c
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Tue Feb 4 20:19:47 2014 -0800

    Merge pull request #466 from ghedamat/mattia/proxy-prefix-parameter

    add support to change api prefix (from the /api default)

commit 4093b8c9a35a1d288a9282fbbd97308325125c61
Author: Mattia Gheda <ghedamat@gmail.com>
Date:   Tue Feb 4 21:42:39 2014 -0500

    add support to change api prefix

    (from the /api default)

commit 075a2ecccf704d5eadfab9becaedf92f4952464c
Merge: e424177 656d229
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Fri Jan 31 07:17:34 2014 -0800

    Merge pull request #462 from aexmachina/master

    Don’t call `factory()` before calling to `delegate()` in `moduleFor()`

commit 656d229870a717c56e22057b257c4e13d095f2db
Author: Simon Wade <simon.wade@gmail.com>
Date:   Fri Jan 31 17:53:09 2014 +1100

    Don’t call `factory()` before calling to `delegate()`. Allows injections to be specified in the provided `delegate()` function.

commit e424177907ea71e212b804a254eb8d8186d52f96
Merge: 1bbc7d0 44269b6
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Thu Jan 30 06:56:35 2014 -0800

    Merge pull request #459 from ghedamat/mattia/contributing

    add contributing.md with notes on how to contribute to the eak website

commit 44269b60cd2af402435d972f38b2fa7306955e2b
Author: Mattia Gheda <ghedamat@gmail.com>
Date:   Wed Jan 29 21:42:11 2014 -0500

    add contributing.md with notes on how to contribute to the eak website

    Bluntly stolen from the ember.js CONTRIBUTING.md

commit 1bbc7d000fe6bb6b704fcc42f4eb37b7a66d1d5b
Merge: ca30800 eb43d16
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Tue Jan 28 05:56:48 2014 -0800

    Merge pull request #454 from MajorBreakfast/patch-4

    Bump ic-ajax version

commit eb43d16a7aa7faa0218b1ed189f34c9fc8b45235
Author: MajorBreakfast <mail@josefbrandl.de>
Date:   Tue Jan 28 12:54:10 2014 +0100

    Bump ic-ajax version

commit ca30800d583d2df8a5007c8e30dcddf517d7de48
Merge: f0f9b07 784abd1
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 27 22:10:31 2014 -0800

    Merge pull request #453 from pangratz/fix/bug_in_test_helpers

    Fix bug in recently improved test helpers

commit 784abd16938b87b64a477ebdd2d98c100b288d21
Author: pangratz <cmueller.418@gmail.com>
Date:   Tue Jan 28 07:03:12 2014 +0100

    Fix bug in recently improved test helpers

commit f0f9b07f0094ff1fdfa5e7e34ab862b98dbd198f
Merge: a7fa51b b6a499b
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 27 21:42:58 2014 -0800

    Merge pull request #452 from stefanpenner/improved-test-helpers

    Improved Test Helpers

commit b6a499be941d1c28c261a37f6b4f02d038178d1d
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Tue Jan 28 00:26:01 2014 -0500

    Improved Test Helpers

    Although ember has pretty good architecture that facilitates
    good testing, for some things such as components and ember data models,
    it can be tricky to figure out how to even get started testing.

    Within ember apps, we tend to use context specific naming conventions
    such as this.store(<model-name>), or needs[ <controller-name>], why do
    we need to change this convention for our testing.

    Also, although QUnit provides a battle tested testing framework
    some conventions are pretty bar bone. Async testing, management of
    test run specific properties, all leave much to be desired.

    Async testing:

    Currently, patterns such as the following might be possible.

    ```js
    test("foo", function(){

      stop();
      somethingAsync().then(function(){
        start();
        ok(true, '');
      });
    })
    ```

    But what if simply returning a promise to the callback
    handled the start/stop/timeout book keeping for us?

    Bonus: what if when the test framework detected a returned
    promise, it also asserted that it must settled fulfilled.

    ```js
    test("foo", function(){
      return somethingAsync().then(function(){
        ok(true, 'something important');
      });
    })
    ```

    It is common for your tests to have various variables constructor
    During the setup and teardown phase of our tests. Unfortunately,
    sometimes its common to leak them by accident, or not tear them down.

    Such as.

    ```js
    var foo, bar, baz;

    module("testing the thing", {
      setup: function() {
        foo = Ember.Object.create();
        bar = Ember.Object.create();
      },

      teardown: function() {
        foo = null;
        bar = null;
      }
    });

    test("a test run", function(){
      ok(foo);
      equal(foo, bar);
    });
    ```

    So instead, lets let the test framework handle the hard work.

    ```js

    moduleFor('controller:bar', 'testing the thing', {
      setup: function(factory, container) {
        factory   // => factoryFor controller:bar
        container // => container for injections to be specified.
      },
      // setup: still exists if you need;
      foo: function() {
        return Ember.Object.create();
      },
      bar: function() {
        return Ember.Object.create();
      }
      // teardown: still exists if you need,
      // but cleanup happens automatically.
    });

    test("a test run", function() {
      // these variables  are lazily instantiated, and cached per test run
      var foo = this.foo();
      var bar = this.bar();

      var controller = this.subject(); // instance of controller:bar

      ok(foo);
      equal(foo, bar);
    });
    ```

    component example:

    ```js
    moduleForComponent('foo');

    test("testing foo focuses on entry", function(){

      var component = this.subject();

      // component is rendered the first time we invoke `this.$()`
      // as that is the first time we are inspecting the DOM.
      ok(this.$().is(':focus'));
      ok(component.$().is(':focus'));
    });
    ```

    extensibility:

    Currently `moduleFor` and `test` are the foundational api's

    the first level of configuration is via the module hash

    ```js
    moduleFor('controller:foo', 'description', {
      subject: function(factory, options) {
        return factory.create(options); // override the default "subject"
      },
      setup: function(container) {
        // register factories or injection rules on the container
      },
      bar: function() { }, // other managed variables
      baz: function() { }
    });
    ```

    the second is by specifying a custom `moduleForHelper`, this API and functionality
    is still in its infancy so expect it to change some, but an example is the implementation of moduleForModel:

    ```js
    function moduleForModel(name, description, callbacks) {
      moduleFor('model:' + name, description, callbacks, function(factory, container, context) {
        container.register('store:main', DS.Store);
        container.register('adapter:application', DS.FixtureAdapter);

        context.__setup_properties__.store = function () {
          return container.lookup('store:main');
        }
      }
    }
    ```

    paired with @hjdavid
    high level ideas derived from conversation with @tomdale + @wycats

commit a7fa51bcbeca1f746337e22c28223127265f6829
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 27 23:49:49 2014 -0500

    ember data should be allowed in tests

commit 0d73d0086ae91b677efdf80566f85abd6764f876
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 27 23:49:39 2014 -0500

    liveReload port should be an an increment of the base port, so we can easily run multiple EAK apps with liveReload.

commit f204333a9da07414b64cc0b52b2348851f2b5dff
Merge: 30203e4 2d92f39
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sat Jan 25 18:44:08 2014 -0800

    Merge pull request #449 from rjackson/update-ember-data

    Update to Ember Data 1.0.0-beta.6.

commit 2d92f390da1cd4761dadbaff32573c0dade6499b
Author: Robert Jackson <robert.w.jackson@me.com>
Date:   Sat Jan 25 21:27:10 2014 -0500

    Update to Ember Data 1.0.0-beta.6.

    This resolves an incompatibility with the EAK resolver and the way Ember
    Data looked up its internal types.

commit 30203e41aac6d2fc4089870106908f3d4c924e5c
Merge: 8f65a24 d6cc4cd
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sat Jan 25 08:12:18 2014 -0800

    Merge pull request #445 from dhilipsiva/watch-bower-and-npm

    Watch bower and npm

commit 8f65a24da1e092d927467cd039d5f1bb992ad37d
Merge: 10ab13a afa0b33
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sat Jan 25 07:33:11 2014 -0800

    Merge pull request #444 from dhilipsiva/patch-1

    Watch config files too.

commit 10ab13a7dcea26a0373e1cc679d24006835dcb78
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sat Jan 25 10:26:53 2014 -0500

    upgrade some libs.

commit d6cc4cd8e1eed52fbb1606167366da8399c53a0a
Author: dhilipsiva <dhilipsiva@gmail.com>
Date:   Sat Jan 25 16:05:20 2014 +0530

    Watch bower and npm

commit afa0b33d481718ecf1631417e7d846ad14f995bb
Author: dhilipsiva <dhilipsiva@gmail.com>
Date:   Sat Jan 25 15:28:49 2014 +0530

    Watch config files too.

commit a0552c41ef019de9ff156f9563f6f07189875ada
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Thu Jan 23 00:58:58 2014 -0500

    loader should not default the value to { }

    as if loading the module actually fails, epic self-trolling failure
    happens

commit 28acf53f16546a5569b74cdecbebf456ee9b0dcf
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Wed Jan 22 18:30:36 2014 -0500

    bump jshint to 0.8.0

commit a97c6e67ab3fe0ce6eaad31b4c63157735a175b6
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Wed Jan 22 18:16:56 2014 -0500

    update all the jshints

commit 70a2969d35e9509cfb707271a6abcc2ed138bac5
Merge: 3885438 831c663
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Wed Jan 22 13:33:45 2014 -0800

    Merge pull request #440 from jas/master

    Replace JSHint `predef` with `globals`

commit 3885438af0a3bbbe8c7f2ac5324326948eda6f12
Merge: 5fbed1a 90aa4db
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Tue Jan 21 12:50:59 2014 -0800

    Merge pull request #436 from ulisesrmzroche/master

    Remove brittle tests

commit 90aa4db0143aeaede784f5d79bd2b4f1c8702ded
Author: Ulises Ramirez-Roche <ulisesrmzroche@gmail.com>
Date:   Tue Jan 21 14:08:35 2014 -0600

    decrease number of asserts

commit f662e8b26f46c72ebbe6f20ba02ee09ecc6854aa
Author: Ulises Ramirez-Roche <ulisesrmzroche@gmail.com>
Date:   Tue Jan 21 13:49:17 2014 -0600

    Remove brittle tests

    * The Title is not an output of the component.

commit 5fbed1a6ab1ad80dba2972dd2bed9172cb76f933
Merge: 28094d1 bbb8264
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Tue Jan 21 10:57:55 2014 -0800

    Merge pull request #435 from MajorBreakfast/patch-4

    Remove relative paths

commit bbb8264a9a83885869e2e3a45393246454370c13
Author: MajorBreakfast <mail@josefbrandl.de>
Date:   Tue Jan 21 18:42:21 2014 +0100

    Remove relative paths

    Okay. Let's try again.

commit 28094d1f84f272733b0eb0cfb8e64ca1999bff78
Merge: 7ece9d0 d363d8c
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Tue Jan 21 05:29:03 2014 -0800

    Merge pull request #433 from MajorBreakfast/patch-2

    Update helpers.js to include grunt-rev

commit d363d8ce0a53e518a1cc8dd45b134f888677f12d
Author: MajorBreakfast <mail@josefbrandl.de>
Date:   Tue Jan 21 10:47:25 2014 +0100

    Update helpers.js to include grunt-rev

commit 7ece9d0f6120e0bbec1fb7c0a6417ce36e66e074
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 20 23:00:44 2014 -0500

    templates in pod structure should also compile

commit bd231ae2371fa93a07fdba1a940d1dfb4dae37b1
Merge: c4bd4de b949c91
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 20 12:07:48 2014 -0800

    Merge pull request #432 from ulisesrmzroche/master

    imagemin should not empty files if run repeatedly

commit b949c91c7597b444717e984e03c80003b2629bc5
Author: Ulises Ramirez-Roche <ulisesrmzroche@gmail.com>
Date:   Mon Jan 20 13:27:37 2014 -0600

    imagemin should not empty files if run repeatedly

    There is an active bug in imagemin where if you run the task repeatedly it can start outputting empty files. Currently, the easiest way to get around it is to set the cache option to false.

    https://github.com/gruntjs/grunt-contrib-imagemin/issues/140

commit c4bd4de8e4ddb60eb27209e486c5134a92d6a3b8
Merge: 32c7790 8683024
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 20 10:03:35 2014 -0800

    Merge pull request #431 from cavneb/fix-392

    Force testem to rerun tests after any files in tmp/result are changed.

commit 868302446e6094edf4400baed3f95fe6464b08fc
Author: Eric Berry <cavneb@gmail.com>
Date:   Sun Jan 19 13:31:07 2014 -0700

    Force testem to rerun tests after any files in tmp/result are changed.

    Fixes issue 392

commit 32c7790c7564d0d194393a53907618ad4a0b0e61
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 20 09:26:34 2014 -0500

    [Fixes #416] CLI tools referenced within package.json should be referenced node_module local

commit e0883940e8fbb135f0dd4fdbf3a057249da3008a
Merge: 59ca69c 60f395d
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sun Jan 19 20:35:54 2014 -0800

    Merge pull request #425 from rjackson/add_clear_to_loader

    Allow clearing the registry.

commit 59ca69c945b8bae73cc053f6e1bf42850fbcccbf
Merge: 98ec078 b91951a
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sun Jan 19 19:46:11 2014 -0800

    Merge pull request #428 from rjackson/update_ember

    Update to Ember 1.4.0-beta.2

commit b91951a70e069208e6a7dc3176cc6778a65ac6a3
Author: Robert Jackson <robert.w.jackson@me.com>
Date:   Sun Jan 19 19:14:10 2014 -0500

    Update to Ember 1.4.0-beta.2

    Ember 1.3.1 has an issue that prevents loading/error substates from
    working properly (see [detailed
    comment](https://github.com/stefanpenner/ember-jj-abrams-resolver/issues/13#issuecomment-32726797)).

    This was fixed upstream and is working properly on Ember 1.4.0-beta.2.

commit 60f395d6def2dbaeba47630ce26f42519eddcf66
Author: Robert Jackson <robert.w.jackson@me.com>
Date:   Fri Jan 17 12:50:41 2014 -0500

    Allow clearing the registry.

    This is useful for testing custom lookups in the resolver itself. I
    would much prefer to keep this the same everywhere and it currently
    seems that the canonical `loader.js` is here in EAK.

    Also, moved the definition of `requirejs._eak_seen` to be outside of the
    `requirejs` function. I am not sure why we would want to reset it
    everytime that we call require.

commit 98ec0785dec546583a56ac1d4fe76e7d37d1cd7e
Merge: f9025c1 5972743
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Thu Jan 16 13:31:36 2014 -0800

    Merge pull request #421 from seriousben/FEATURE-Fix-too-many-open-files

    Fix watch task failing on Too Many Open Files

commit 5972743b6f33b221a232793d721c70bbb6d4a3ef
Author: Benjamin Boudreau <benjamin.boudreau@360pi.com>
Date:   Thu Jan 16 14:34:00 2014 -0500

    Fix watch task failing on Too Many Open Files

commit f9025c1ae4c43641ab98015448de22c97f70a63d
Merge: 3bb1794 5de6607
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Thu Jan 16 10:26:23 2014 -0800

    Merge pull request #418 from astonishdesign/feature/404resources

    [#417] Returns 404 for un-handled resources

commit 5de66071a5e6ada9fc342a1aa673d1fe1ca5bedc
Author: FilmKnurd <andrew@astonishdesign.com>
Date:   Thu Jan 16 08:08:08 2014 -0600

    Halts the middleware chain after handling 404 resources

    Signed-off-by: FilmKnurd <andrew@astonishdesign.com>

commit ed0cfc7232f78f8f8647fbb70a2a3a758787ec61
Author: FilmKnurd <andrew@astonishdesign.com>
Date:   Thu Jan 16 06:35:40 2014 -0600

    [#417] Returns 404 for un-handled resources

    To use, add ignoredFileExtensions key to static():

    ```JS
    app.use(static({ file: 'tmp/result/index.html', ignoredFileExtensions: /\.\w{1,5}$/ }));
    ```

    Middleware is processed sequentially, so this should be the last call
    to catch non-existent asset files. All other paths continue back to
    index.html to be handled by the Ember router.

      - Adds another option, ignoredFileExtensions the static middleware
        function, which allows you to specify a regex to capture resource
        paths that should return a 404.
      - Adds a check in static() for ignoredFileExtensions key that tests
        the regex against the request path for a matching file ending.
        If matched, then it sends a 404 error and does not serve the
        index.html file.

    Passes an error string to next when trapping 404s

    Traps 404s for resources in dist mode as well

    Refactors 404 trap to an ignored file extensions property on the index.html catchall

    Refactors ignoredFileExtensions regex

commit 3bb179467bf684b78db1e298295934fca2cc2777
Merge: 7f40b0d fe0f687
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sun Jan 12 08:39:49 2014 -0800

    Merge pull request #409 from MajorBreakfast/master

    Removed custom load-grunt-config package

commit fe0f687d0958a508bf2e8118c17a8f419af5277d
Author: Josef Reinhard Brandl <mail@josefbrandl.de>
Date:   Thu Jan 9 12:43:54 2014 +0100

    Removed custom load-grunt-config package

commit 7f40b0dd6b90949d1d635bf86a62a6c79594223c
Merge: 3ceba55 8285d5c
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Wed Jan 8 10:48:49 2014 -0800

    Merge pull request #407 from astonishdesign/feature/fix_testemjs

    Removes static reference to testem.js; Moves testem.js to public

commit 8285d5ce1e430e51393e6465bfcbfece5ab4bffe
Author: FilmKnurd <andrew@astonishdesign.com>
Date:   Wed Jan 8 12:02:41 2014 -0600

    Removes space between lines

commit 411eed34609c89951079fd047a12e5fba5375c7d
Author: FilmKnurd <andrew@astonishdesign.com>
Date:   Tue Jan 7 14:36:37 2014 -0600

    Removes static reference to testem.js; Moves testem.js to public

commit 3ceba556f7eace742978ee7e83e91a6374475861
Merge: 39d172d e8d7158
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Tue Jan 7 22:51:06 2014 -0800

    Merge pull request #406 from pangratz/soothe_jshint

    Soothe JSHint which cries about "Mixed spaces and tabs."

commit e8d71582af1c624140cb70138c1c36e30309332a
Author: pangratz <cmueller.418@gmail.com>
Date:   Wed Jan 8 07:32:46 2014 +0100

    Soothe JSHint which cries about "Mixed spaces and tabs."

    ```
    $ grunt jshint
    Running "jshint:app" (jshint) task
    >> 9 files lint free.

    Running "jshint:tooling" (jshint) task
    >> 29 files lint free.

    Running "jshint:tests" (jshint) task
    Linting tests/testem.js ...ERROR
    [L9:C3] W099: Mixed spaces and tabs.
     *     <script src="/testem.js"></script>

    Done, without errors.
    ```

commit 39d172d637becbe8f1f6fc757ce574ce9ea526c1
Merge: ea03583 e9961a9
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Tue Jan 7 17:53:13 2014 -0800

    Merge pull request #383 from opsb/fix_dist_config

    Only copy production environment config when using grunt dist

commit ea03583836d379f2d8610445dcacf77e9781153f
Merge: 53e434f 1495a99
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Tue Jan 7 17:52:42 2014 -0800

    Merge pull request #403 from stefanpenner/default-templates

    Error and loading default templates

commit 53e434f0d6619f544bc92de4e85de398d4fc3c36
Merge: c717779 9441914
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Tue Jan 7 11:16:58 2014 -0800

    Merge pull request #404 from astonishdesign/feature/fix_testemjs

    Fixes URL routing

commit 94419146c5e5bdeaf7aae6d74d7a81b162035a58
Author: FilmKnurd <andrew@astonishdesign.com>
Date:   Tue Jan 7 12:44:21 2014 -0600

    Fixes URL routing

    The way the static middleware works, to serve a file but also let
    index.html catch everything, the urlRoot option must be used in
    conjunction with the directory option.

    Previously, the introduction of faking the testem.js file broke
    location history routing, because all routes were caught by the
    testem fake file. This patch serves the fake file for the URL, but
    also preserves the index.html catch all.

commit 1495a99015f792bce5b3ba9523a2b5dd549eaabf
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 6 16:24:14 2014 -0500

    Error and loading default templates

commit c717779859ea3e52a8449d2d8b43fba3582e0f17
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 6 15:46:54 2014 -0500

    a sane default RSVP onerror now exists in ember

commit 559a1456fac955f8379e82e596563554cd1501d2
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 6 15:34:22 2014 -0500

    upgrade to latest es6-module-transpiler

commit 85bf4ff8424331a47900bc1166d4dc76faafc7ad
Merge: ed1814b b89a3ae
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Jan 6 11:58:36 2014 -0800

    Merge pull request #402 from astonishdesign/feature/fix_inbrowser_tests

    [#401] Fakes testem.js so that in-browser tests run

commit b89a3aeb2bd9b849cd9aba07088ae27a75037b7c
Author: FilmKnurd <andrew@astonishdesign.com>
Date:   Mon Jan 6 13:54:19 2014 -0600

    [#401] Fakes testem.js so that in-browser tests run

    Testem requires a script tag to load /testem.js, which is supplied
    by Testem. This file doesn't actually exist on the file system, which
    causes localhost:8000/tests to fail with a global failure.

    By telling express to serve up a fake testem.js file, the script load
    is satisfied, thus making it posible to execute the tests in both
    the Testem and direct contexts.

commit ed1814b96dff11a031610b6efe09fde54ff3f874
Merge: c6ffdf4 01195b0
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sun Jan 5 18:53:56 2014 -0800

    Merge pull request #400 from astonishdesign/feature/simplified_testem

    Simplifies testem configuration to reduce duplication

commit 01195b04c230dcf3d6457ac8d4cda3ee4fed94ea
Author: FilmKnurd <andrew@astonishdesign.com>
Date:   Sun Jan 5 20:30:18 2014 -0600

    Simplifies testem configuration to reduce duplication

    Instead of specifying the source and serve files, this change
    utilizes the test_page option to test index.html directly and load
    all the scripts as specified in that file.

      - Removes src and serve options from grunt testem task and from
        testem.json
      - Adds testem.js to index.html as per
        [testem docs](https://github.com/airportyh/testem#include-snippet)
      - Adds routes to testem configuration so that testem can correctly
        locate test files and assets as referenced in index.html

commit c6ffdf4d6d0ed325ec15a091b9c559d831f9cb83
Merge: 2365f2b c5827a7
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sun Jan 5 10:52:04 2014 -0800

    Merge pull request #399 from astonishdesign/feature/testem_test_index

    Configures Testem to use the test build of index.html

commit c5827a72f3ece3f4dff514823a4521f05b1d694c
Author: FilmKnurd <andrew@astonishdesign.com>
Date:   Sun Jan 5 11:08:25 2014 -0600

    Configures Testem to use the test build of index.html

    The old Karma configuration ran tests against the test build of
    index.html (/result/test/index.html). This updates the configuration
    to keep with that setting.

commit 2365f2b8b0aa970c0b4c310e1efa9a7d72a86281
Merge: 00abb1e 66ea764
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Fri Jan 3 14:57:51 2014 -0800

    Merge pull request #395 from MajorBreakfast/master

    Added autoprefixer, connect-livereload now enabled by default

commit 00abb1e558e6f6e31c3316698c3a3f27c9984ea4
Merge: 5835f89 b96bdf6
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Fri Jan 3 09:44:05 2014 -0800

    Merge pull request #397 from cavneb/issue/392

    removed test:server grunt task and added testem config json

commit b96bdf622dd862ae182fc772687affe0b3b0b281
Author: Eric Berry <cavneb@gmail.com>
Date:   Fri Jan 3 09:33:02 2014 -0700

    removed test:server grunt task and added testem config json

commit 66ea76406ebfe25a99a3812b4db91701a66ecea4
Author: Josef Brandl <mail@josefbrandl.de>
Date:   Wed Jan 1 11:16:48 2014 +0100

    Added autoprefixer, connect-livereload now enabled by default

commit 5835f8907085951a695a90f4babe663daac43811
Merge: ed9c8f4 0387609
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sun Dec 29 07:24:40 2013 -0800

    Merge pull request #390 from rivol/master

    Use absolute paths for dist assets

commit 0387609d2610c5d6f981bac0f3d8081242e2618f
Author: Rivo Laks <rivolaks@gmail.com>
Date:   Sun Dec 29 16:58:36 2013 +0200

    Use absolute paths for dist assets

commit ed9c8f470a08efe71fa2f21cd6afffd0f1a5b739
Merge: d8073e4 8ee4ce3
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sun Dec 29 06:30:42 2013 -0800

    Merge pull request #389 from raytiley/port

    Validate port of development server

commit 8ee4ce38a8b8160b703792c2b7e7524298c4ac0e
Author: Ray Tiley <raytiley@gmail.com>
Date:   Sat Dec 28 23:12:36 2013 -0600

    Validate port of development server

commit d8073e456b5d35107f3b91fb51ae149d613002d5
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sun Dec 29 02:02:02 2013 -0500

    save resolution

commit b05999fbb6323a2a43c458a9d9c59748d4bf8bc0
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sun Dec 29 00:26:58 2013 -0500

    toddy-up start app helper

commit df399d9b166a029a2d0647947e65a27d92b9a41b
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sun Dec 29 00:26:41 2013 -0500

    upgrade ember

commit b1d902ab578f9f805278c36af7208fcb520d00bf
Merge: 0f2d2b8 9105058
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sat Dec 28 20:52:31 2013 -0800

    Merge pull request #292 from cavneb/feature/testem

    replaced karma with testem

commit 0f2d2b840eeb5b0998f687cf0894d434110d86c5
Merge: b14ce82 632626d
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Sat Dec 28 20:51:25 2013 -0800

    Merge pull request #385 from MajorBreakfast/master

    Fancy Sprites (Video :)

commit 632626df456c6734f8b01e09157e327041448765
Author: Josef Brandl <mail@josefbrandl.de>
Date:   Mon Dec 23 15:36:05 2013 +0100

    Fix

commit 351546ee1998bc7c9f54e5ac9b640e210e49e34a
Author: Josef Brandl <mail@josefbrandl.de>
Date:   Mon Dec 23 15:15:57 2013 +0100

    Fancy Sprites

commit b14ce8286e135411ea55148c27264d4ecce3e2c7
Merge: 88af455 d9f8f58
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Thu Dec 19 07:34:13 2013 -0800

    Merge pull request #384 from cavneb/feature/loom-integrate

    Integrated loom generators

commit d9f8f581c91c91fd1124c5b8608c894f484b0c95
Author: Eric Berry <cavneb@gmail.com>
Date:   Thu Dec 19 08:29:42 2013 -0700

    Integrated loom generators

commit 9105058ce71c7f78db767cddab529d2edcd550f9
Merge: 967dd45 88af455
Author: Eric Berry <cavneb@gmail.com>
Date:   Thu Dec 19 08:24:03 2013 -0700

    Merge remote-tracking branch 'upstream/master' into feature/testem

commit e9961a96119014aba2d98d30b803a16a81310176
Author: opsb <oliver@opsb.co.uk>
Date:   Wed Dec 18 13:50:12 2013 -0700

    Only copy production environment config when using grunt dist

commit 88af455472287830640fdeb378021d091ec0315b
Merge: 5c3e2e6 9d9f1d2
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Wed Dec 18 09:21:46 2013 -0800

    Merge pull request #382 from fsmanuel/master

    adds ember-testing-httpRespond to bower.json #369

commit 9d9f1d20d5870731f47d2f8397272b25dd7fa5da
Author: Manuel Wiedenmann <manuel@funkensturm.de>
Date:   Wed Dec 18 18:14:09 2013 +0100

    adds ember-testing-httpRespond to bower.json #369

commit 831c663780111266724135a3015e743ffe4a1837
Author: Jason Sandmeyer <jasandmeyer@me.com>
Date:   Tue Dec 17 20:17:44 2013 -0500

    Replace JSHint `predef` with `globals`

    It looks like `predef` was deprecated in favor of `globals` some time ago.

commit 5c3e2e6ee2711169b109659c871dc3be2d98cb79
Merge: 73eadcd 58c08d0
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Tue Dec 17 13:17:48 2013 -0800

    Merge pull request #381 from cavneb/feature/update-loom-npm

    Updated grunt file to reference using appkit compatible loom

commit 58c08d04f9904c84b748abf8f47620e3360a5eca
Author: Eric Berry <cavneb@gmail.com>
Date:   Tue Dec 17 14:09:31 2013 -0700

    Updated grunt file to reference using appkit compatible loom

commit 73eadcd62d206ffe8db0e40621b06a9d4ea7fece
Merge: 808f695 6f2fa4c
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Mon Dec 16 18:49:20 2013 -0800

    Merge pull request #380 from jas/express-deprecation-warning

    Suppress Express deprecation warning caused by `bodyParser` middleware

commit 6f2fa4cd72762bd6c5128d9f5f3c4db5665c4090
Author: Jason Sandmeyer <jasandmeyer@me.com>
Date:   Mon Dec 16 21:19:46 2013 -0500

    Suppress Express deprecation warning

commit 808f6957d0bd99aa7c708ec0a26aaf46a594b14d
Author: machty <machty@gmail.com>
Date:   Thu Dec 12 11:40:38 2013 -0500

    Bump ic-ajax

    Bump to the version of ic-ajax that distinguishes
    between ic.ajax and ic.ajax.raw

commit 1747de969ed25b577f2c779cb8dacead9392a682
Merge: 041a2d3 f55c74e
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Thu Dec 12 06:11:28 2013 -0800

    Merge pull request #372 from bcardarella/bc-cleaner-default-env-files

    Don't destroy global config object

commit f55c74ef269284cb06d6652ef09d654233d7fa31
Author: Brian Cardarella <bcardarella@gmail.com>
Date:   Thu Dec 12 01:31:11 2013 -0500

    Don't destroy global config object

    This will encourage people not to destory their window.ENV object by
    reassigning it a completely new value.

    The environemnt specific files should load after `environemnt.js` has
    loaded. This way the values assigned to `window.ENV` in those
    environment specific files can overwrite any defaults set in
    `environment.js`

    I have also cleaned up the comments somewhat and included a simple
    example of setting a config value.

commit 041a2d367734d3288a7b3d5b45798b0df93843af
Merge: 87c5964 eafa9ff
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Wed Dec 11 20:32:28 2013 -0800

    Merge pull request #370 from rjackson/add_config

    Add default config setup.

commit eafa9ffaa8eafe7f1e0010ecb5b31cb5e51332eb
Author: Robert Jackson <robert.w.jackson@me.com>
Date:   Wed Dec 11 14:09:48 2013 -0500

    Add default config setup.

    Allows specifying configuration in the following files:

    * `config/environment.js` - This is loaded in all enviroments.
    * `config/environments/production.js` - This is loaded when
      building with `grunt dist`.
    * `config/environments/development.js` - This is loaded when
      building a normal development server (via `grunt server` generally).
    * `config/environments/test.js` - This is loaded when running tests via
      either browsing to `/tests` URL or running via karma.

commit 87c5964ec1a909b0a6071e80d053d92615b4cc94
Author: Alex Matchneer <machty@gmail.com>
Date:   Wed Dec 11 13:49:54 2013 -0500

    isolatedContainer should know what not to instantiate

    No reason to make people write this boilerplate themselves, right?

commit de1cb2844388c329f9f5a62fac7cd493290683b1
Merge: eaac8df 4df9a98
Author: Thomas Boyt <me@thomasboyt.com>
Date:   Tue Dec 10 11:52:14 2013 -0800

    Merge pull request #366 from ghempton/emberscript

    add .em files to watch:scripts

commit 4df9a98079a08e55ba7085a79ff1998cfb7f16fc
Author: Gordon L. Hempton <ghempton@gmail.com>
Date:   Tue Dec 10 11:50:50 2013 -0800

    add .em files to watch:scripts

commit eaac8dfeba030130a62f341b53d5ddd35c0f82b5
Merge: b5e5a5f 4c227bf
Author: Thomas Boyt <me@thomasboyt.com>
Date:   Thu Dec 5 21:14:30 2013 -0800

    Merge pull request #362 from ghempton/emberscript

    support for emberscript

commit 4c227bf5e9291baa183c9bf0757c9b58de755be2
Author: Gordon L. Hempton <ghempton@gmail.com>
Date:   Thu Dec 5 20:35:22 2013 -0800

    support for emberscript

commit 967dd454d022a82328a63c97489732330e0cf690
Merge: 9a3b569 27b5699
Author: Eric Berry <cavneb@gmail.com>
Date:   Mon Dec 2 09:06:24 2013 -0700

    Merge remote-tracking branch 'upstream/master' into feature/testem

    Conflicts:
    	Gruntfile.js
    	app/app.js
    	karma.conf.js
    	package.json

commit 9a3b56997e7b763de4e9a8b220ef0f21c943204a
Merge: c8c6b9b 94db20a
Author: Eric Berry <cavneb@gmail.com>
Date:   Fri Nov 8 08:46:40 2013 -0800

    Merge pull request #1 from stefanpenner/fix-pr-292

    Fix pr 292

commit 94db20ad0789f89a04248e91b471c36d3f2bc748
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Wed Nov 6 23:18:20 2013 -0500

    fix testum to rebuild correctly

commit dcc6ae248520d1a903c43e2c3eb0c2fc1c196c11
Merge: c8c6b9b b708335
Author: Stefan Penner <stefan.penner@gmail.com>
Date:   Wed Nov 6 22:59:43 2013 -0500

    Merge branch 'master' into pr/292

commit c8c6b9b37953be8e9dbc02af7659c60d8ec1b519
Author: Eric Berry <cavneb@gmail.com>
Date:   Wed Nov 6 11:08:54 2013 -0700

    replaced karma with testem