views:

1508

answers:

5

First of all, according to this answer, the :cache => true option on stylesheet_link_tag and javascript_include_tag doesn't work on Heroku. Is this true? I've found :cache => true to work occasionally, but not always (weird!)

Also, what's the best solution here? Ideally it would seamlessly combine and minify all CSS / JS. Heroku Asset Packager claims to do this -- are there better options?

A: 

I haven't tried it on heroku yet, but Sprockets might be good for that. Also, in the past, I've had more luck with

:cache => 'all.css'
:cache => 'all.js'

instead of 'true'

Jerry Cheung
A: 

It's a different way to manage your CSS/Javascript but you may want to check out the Rails plugin shoebox.

Shoebox can do combining, minifying, and caching.

David Dollar
+1  A: 

GitHub has a good answer for this, and I'm sure you could modify Heroku's deployment scripts to integrate:

http://github.com/blog/551-optimizing-asset-bundling-and-serving-with-rails

Josh
A: 

The project name says it all:

http://github.com/amasses/heroku_asset_packager

databyte
But this puts packaged assets into `/tmp`, which, according to http://docs.heroku.com/constraints, won't necessarily stick around across requests
Horace Loeb
Have you tried Jammit? http://documentcloud.github.com/jammit/ I've read several commits from other public projects that have switched to this though I haven't tried myself. I'll have to test that out myself one day soon... don't opt for pre-compilation, have the gem compile the assets, and then clear out any files from underneath it, and see if it recompiles the assets again. I haven't read Jammit's source to confirm but it's worth a shot unless you've found something else.
databyte
+4  A: 

I'm using Jammit on Heroku. Works Great. You can locally build your assets and check in to heroku. use

jammit --force

the current version 0.5.1 has issues working on heroku but you can install the fixed version from git://github.com/documentcloud/jammit.git

If you are using Rails 3, specify the below in your bundler Gemfile:

gem "jammit", :git => "git://github.com/documentcloud/jammit.git"

For Rails 2.*

config.gem "jammit", :source => "git://github.com/documentcloud/jammit.git"

Good Luck.

Greg