rake assets:precompile:nodigest in Rails 4

前端 未结 6 1430
耶瑟儿~
耶瑟儿~ 2021-01-11 17:03

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

6条回答
  •  野趣味
    野趣味 (楼主)
    2021-01-11 17:48

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

    Per sprocket-rails's Readme:

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

    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
    

提交回复
热议问题