如何在rails中输出整个资产管道?

时间:2015-06-30 20:45:59

标签: javascript ruby-on-rails ruby asset-pipeline

对于这个特定的rails项目,我想保存一个http请求,所以我想将所有的javascript输出到已经在rails资产管道中的主体上。

有没有办法在rails中执行此操作?

1 个答案:

答案 0 :(得分:2)

你很遗憾无法在开发过程中轻松使用它,因为文件是由Sprocket's server实时提供的,但是在生产中使用它非常简单:你只需要循环编译的脚本并将它们渲染成blob。

这是一个帮助,您可以使用而不是javascript_include_tag来执行此操作:

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

请注意,您仍然需要运行rake assets:precompile才能生效。不要忘记设置环境以启用任何uglifiers和minifers! (RAILS_ENV=production rake assets:precompile