# Looking for the right development tool / workflow

**URL:** <https://discuss.emberjs.com/t/looking-for-the-right-development-tool-workflow/2051>\
**Category:** Uncategorized\
**Created:** [August 5, 2013, 1:22pm UTC](https://discuss.emberjs.com/t/looking-for-the-right-development-tool-workflow/2051 "2013-08-05T13:22:18Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![stravid](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/stravid/32/10138_2.png) [@stravid](https://discuss.emberjs.com/u/stravid)\
**Post date:** [August 5, 2013, 1:22pm UTC](https://discuss.emberjs.com/t/looking-for-the-right-development-tool-workflow/2051/1 "2013-08-05T13:22:18Z")

</div>

Hey folks!

While I’m not entirely new to Ember.js I still struggle to find a development tool / workflow which is not a pain in the ass at some point.

Basically I’m looking for something that fulfils my wish list:

- Compiles CoffeeScript
- Compiles SASS
- Manages Handlebars templates in separate files
- Uses non-minified Ember.js in development
- Has a development server which supports the History API (don’t try to display ‘/projects/1’, just respond with the index.html)
- Allows me to build a production release
- A production release is minified, concatenated and uses the minified Ember.js version
- A production release has fingerprinted (a hash in the filename) assets so I can cache very aggressively
- Isn’t hostile to testing

I hope someone can point me into a direction, thanks a lot!

---

<div class="post-metadata">

**Author:** ![knownasilya](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/knownasilya/32/12912_2.png) [@knownasilya](https://discuss.emberjs.com/u/knownasilya)\
**Post date:** [August 5, 2013, 1:36pm UTC](https://discuss.emberjs.com/t/looking-for-the-right-development-tool-workflow/2051/2 "2013-08-05T13:36:46Z")

</div>

I suggest [Yeoman](http://yeoman.io/) combined with [generator-ember](https://github.com/yeoman/generator-ember). I’m pretty sure this fulfills every requirement.

---

<div class="post-metadata">

**Author:** ![cavneb](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/cavneb/32/14809_2.png) [@cavneb](https://discuss.emberjs.com/u/cavneb)\
**Post date:** [August 5, 2013, 1:50pm UTC](https://discuss.emberjs.com/t/looking-for-the-right-development-tool-workflow/2051/3 "2013-08-05T13:50:04Z")

</div>

If you are up for using Rails, you can use [ember-rails](https://github.com/emberjs/ember-rails) which does this also, however you would be married to Rails at that point.

---

<div class="post-metadata">

**Author:** ![quadule](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/quadule/32/14764_2.png) [@quadule](https://discuss.emberjs.com/u/quadule)\
**Post date:** [August 5, 2013, 7:20pm UTC](https://discuss.emberjs.com/t/looking-for-the-right-development-tool-workflow/2051/4 "2013-08-05T19:20:42Z")

</div>

[Iridium](https://github.com/radiumsoftware/iridium) looks promising for this kind of thing, but I haven’t tried it yet. There are a few Ember skeleton apps for it on GitHub:

[https://github.com/radiumsoftware/iridium-ember](https://github.com/radiumsoftware/iridium-ember)

[https://github.com/darthdeus/iridium-ember-skeleton](https://github.com/darthdeus/iridium-ember-skeleton)

---

<div class="post-metadata">

**Author:** ![mmun](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/mmun/32/14872_2.png) [@mmun](https://discuss.emberjs.com/u/mmun)\
**Post date:** [August 6, 2013, 5:04pm UTC](https://discuss.emberjs.com/t/looking-for-the-right-development-tool-workflow/2051/5 "2013-08-06T17:04:34Z")

</div>

rails + ember-rails provides all of these features.

- _CoffeeScript, SASS:_ Just add coffee-rails and sass-rails to your Gemfile
- _Manages Handlebars templates in separate files:_ Part of ember-rails. You can have multiple root folders for multiple apps as well.
- _Uses non-minified Ember.js in development:_ Add one line to your environment’s config. `config.ember.variant = :development`
- _Has a development server which supports the History API:_ This is not included, but very straightforward to implement yourself. Just add the same routes in your Ember app to you `routes.rb`, or use a catch all route, and redirect them to the same controller action in Rails.
- _Allows me to build a production release:_ Part of rails.
- _A production release is minified, concatenated and uses the minified Ember.js version:_ Part of rails.
- _A production release has fingerprinted (a hash in the filename) assets:_ Part of rails. Precompiled assets include an MD5 digest in the file name. See [The Asset Pipeline](http://guides.rubyonrails.org/asset_pipeline.html#what-is-fingerprinting-and-why-should-i-care-questionmark).
- _Isn’t hostile to testing:_ I don’t have much experience with testing, but I’ve seen that Rails has a lively testing culture.

I think that [https://github.com/heartsentwined/ember-auth-rails-demo/wiki](https://github.com/heartsentwined/ember-auth-rails-demo/wiki) is a great introduction to setting up ember-rails and testing, even if you skip over the ember-auth/devise stuff.

---

<div class="post-metadata">

**Author:** ![raulghm](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/raulghm/32/14899_2.png) [@raulghm](https://discuss.emberjs.com/u/raulghm)\
**Post date:** [August 7, 2013, 2:11am UTC](https://discuss.emberjs.com/t/looking-for-the-right-development-tool-workflow/2051/6 "2013-08-07T02:11:31Z")

</div>

I recommend, Brunch, Grunt or MimosaJS. These solutions meet all you need, but try and choose

Also check: [EmberJS + Brunch.io VS EmberJS + Yeoman VS EmberJS + MimosaJS](http://discuss.emberjs.com/t/emberjs-brunch-io-vs-emberjs-yeoman-vs-emberjs-mimosajs/1923)

---

<div class="post-metadata">

**Author:** ![dbashford](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/dbashford/32/14944_2.png) [@dbashford](https://discuss.emberjs.com/u/dbashford)\
**Post date:** [August 7, 2013, 3:42am UTC](https://discuss.emberjs.com/t/looking-for-the-right-development-tool-workflow/2051/7 "2013-08-07T03:42:02Z")

</div>

Mimosa will do these:

- Compiles CoffeeScript
- Compiles SASS (node or Ruby)
- Manages Handlebars templates in separate files
- Uses non-minified Ember.js in development
- Has a development server which supports the History API (don’t try to display ‘/projects/1’, just respond with the index.html)
- Allows me to build a production release
- Isn’t hostile to testing

That’s mostly all out of the box behavior. Using Ember itself has some somewhat boilerplate config to include that you can see here: [https://github.com/breathe/mimosa-peepcode](https://github.com/breathe/mimosa-peepcode)

It’ll do this…

- A production release is minified, concatenated and uses the minified Ember.js version

… if you are using RequireJS

It doesn’t do this…

- A production release has fingerprinted (a hash in the filename) assets so I can cache very aggressively

…but it would probably be easy to add.
