【问题标题】:How do I output the entire asset pipeline in rails?如何在 Rails 中输出整个资产管道?
【发布时间】:2015-06-30 20:45:59
【问题描述】:

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

有没有办法在 Rails 中做到这一点?

【问题讨论】:

  • 你在这里要求什么? “所有的 JavaScript 到正文中”是什么意思?
  • 啊,所以你的意思是作为内联 <script> 标签。明白了。

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


【解决方案1】:

不幸的是,由于文件由 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)

【讨论】:

  • 你知道这是否会混淆和缩小 javascript 吗?我认为确实如此,但我不确定。
  • 这只是提供来自rake assets:precompile 的任何内容,因此假设您已正确设置production.rb 中的所有内容,它们应该被编译。
猜你喜欢
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多