Rails Rails 4 Undigested Assets

ashchan · 2013年03月20日 · 最后由 ashchan 回复于 2013年03月22日 · 3276 次阅读

Rails 4 中去掉了预编译 undigested assets 的功能(之前有一个 rake task 是 assets:precompile:nondigest)。有谁知道如何生成不带 finger print(即那串 MD5 hash)的 assets 吗?

Rails 3.2 production.rb 可以设置 digest 那个呀 你是说 4 没这个配置了么?

digest 的选项还在,但最终会去掉,改由 assets.compile 来指定。我遇到的问题是,我要用 digest,但同时想保留一份不带 finger print 的版本。

算了,自己写个 task 去读 manifest.json 然后 link 到最新的那份 css:

namespace :assets do
  desc "link nondigest application.css"
  task :link_nondigest => :environment do
    manifest  = Dir.glob("#{Rails.root}/public/assets/manifest-*.json").first
    nondigest = "application.css"


    json = JSON.parse(open(manifest).read)
    css  = json["files"].select { |_, f| f["logical_path"] == nondigest }
      .sort_by { |_, v| Time.parse(v["mtime"]) }
      .last.first


    `rm #{Rails.root}/public/assets/#{nondigest}`
    `ln -s #{Rails.root}/public/assets/#{css} #{Rails.root}/public/assets/#{nondigest}`
  end
end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号