rake资产:预编译:在Rails 4中没有摘要 [英] rake assets:precompile:nodigest in Rails 4

查看:50
本文介绍了rake资产:预编译:在Rails 4中没有摘要的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Rails 3中有一个rake asset:precompile:nodigest任务,它正在编译资产并在/public/assets目录中不包含摘要部分的情况下写入它们.在Rails 4中,已将其删除,并且默认情况下,所有资产仅使用摘要进行预编译.由于各种原因,我还需要某些资产的非消化版本.有什么简单的方法可以恢复以前的行为?

In Rails 3 there was a rake assets:precompile:nodigest task which was compiling assets and writing them without the digest part in /public/assets directory. In Rails 4 this has been removed, and by default all assets are precompiled with digest only. For various reasons I need also non-digested version of some of the assets. Is there any easy way to enable back the old behavior?

推荐答案

Rails 4.0.0中使用的sprockets-rails版本不再支持非消化性资产.

The version of sprockets-rails used in Rails 4.0.0 no longer supports non-digest assets.

每个 sprocket-rails的自述文件:

仅编译摘要文件名.静态的非消化性资产应仅公开存在

Only compiles digest filenames. Static non-digest assets should simply live in public

因此,任何需要静态的资产都可以手动放入public文件夹中.如果您需要复制编译后的资产(例如SCSS文件等),此rake任务可能会有所帮助():

So any assets that need to be static can be manually put into your public folder. If you need to copy compiled assets such as SCSS files, etc., this rake task may help (source):

task non_digested: :environment do
  assets = Dir.glob(File.join(Rails.root, 'public/assets/**/*'))
  regex = /(-{1}[a-z0-9]{32}*\.{1}){1}/
  assets.each do |file|
    next if File.directory?(file) || file !~ regex

    source = file.split('/')
    source.push(source.pop.gsub(regex, '.'))

    non_digested = File.join(source)
    FileUtils.cp(file, non_digested)
  end
end

这篇关于rake资产:预编译:在Rails 4中没有摘要的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆