Rails Javascript compression/minification on respond_to javascript response? Rails Javascript compression/minification on respond_to javascript response? ruby-on-rails ruby-on-rails

Rails Javascript compression/minification on respond_to javascript response?


For Rails 4:

render js: Uglifier.new.compile(render_to_string)


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