Rails Javascript compression/minification on respond_to javascript response?
well, maybe I have a solution:
respond_to do |format| format.js { self.response_body = minify(render_to_string) }end
This perfectly works. Of course that the key is the minify method. You will find a lot of JS minifiers around. For example you can use this one (well if license permits): http://github.com/thumblemonks/smurf/raw/master/lib/smurf/javascript.rb - it is based on Crockford's jsmin.c.
If you put this file into your lib, require it, your minify method can look like this:
def minify(content) min = Smurf::Javascript.new(content) min.minifiedend
Hope that it helped you.
If you plan to do minifying automatically then you probably should go for a piece of middleware. Surprisingly I was not able to find any (there are many aimed to the CSS/JS but it's about static assets not dynamic content) but it would not be such a problem to write it.
For rails 3 using the built in Uglifier method (the default for the assets pipeline)
See Radek's code above and just swap this in.
def minify(content) Uglifier.new.compile(content) end