简体   繁体   中英

How do I output the entire asset pipeline in rails?

For this particular rails project, I want to save on an http request, so I'd like to output all the javascript onto the body that has been in the rails asset pipeline.

Is there a way to do this in rails?

You unfortunately won't be able to get this working easily in development since the files are being served live by Sprocket's server , but getting this working in production is fairly simple: you just need to loop over the compiled scripts and render them in a blob.

Here's a helper that you can use instead of javascript_include_tag which will do just that:

module ApplicationHelper
  if Rails.env.production?
    def embedded_javascript_include_tag(*sources)
      options = sources.extract_options!.stringify_keys
      scripts = sources.uniq.map { |source|
        File.read("#{Rails.root}/public/#{javascript_path(source)}")
      }.join("\n").html_safe
      content_tag(:script, scripts, options)
    end
  else
    def embedded_javascript_include_tag(*sources)
      javascript_include_tag(sources)
    end
  end
end

Note you'll still need to run rake assets:precompile for this to work. Don't forget to set the environment to enable any uglifiers and minifers! ( RAILS_ENV=production rake assets:precompile )

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM