【问题标题】:Rails 4 Asset Pipeline: Compile both with and without fingerprintRails 4 Asset Pipeline:使用和不使用指纹进行编译
【发布时间】:2014-05-08 14:35:51
【问题描述】:

Rails 4 改变了资产的指纹识别方式(用于浏览器缓存破坏):

Old Strategy: application.css?12345
Rails 3.2:    application-12345.css and application.css
Rails 4.0:    application-12345.css

虽然这很有意义,但如果样式表被另一个服务(在我们的例子中是 Zendesk)使用,那就是一个问题。这个外部站点需要来自 Rails 应用程序的 CSS,但它不知道指纹(又名:摘要)。

有没有办法编译所有带有和不带指纹的资产?或者也许是另一种解决这个问题的方法?

【问题讨论】:

  • 预编译过程会创建一个清单 JSON 文件,其中包含有关指纹文件的详细信息。清单文件本身带有指纹,但也许您可以将它作为编译任务的一部分发送到某个地方?
  • 有一个单独的 zendesk 样式表并且不把它放在资产摘要中?应用程序样式表不应该真正为不属于应用程序的外部应用程序提供服务?
  • @Zabba 相信我,在这种情况下使用 Zendesk 的样式表是有意义的。

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


【解决方案1】:

我已经编写了一个 rake 任务来获取 Rails 3.2 中的非指纹文件:

namespace :assets do
  desc "Create symlinks without cache busting digest"
  task :create_symlinks_without_digest => :environment do
    Dir.glob(Rails.root.join('public', 'assets', '**', '*')).each do |item|
      if File.file?(item) && item.match(/-[a-f0-9]{32}/)
        FileUtils.ln_s Pathname(item).basename, item.sub(/-[a-f0-9]{32}/, '')
      end
    end
  end
end

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 2015-06-11
  • 2011-12-23
  • 1970-01-01
  • 2014-04-29
  • 2014-06-26
相关资源
最近更新 更多