加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用asset_sync(S3 / CDN)将./资产放入.slugig

发布时间:2020-12-17 02:03:09 所属栏目:百科 来源:网络整理
导读:我不确定是否存在这样做的方法,但是对于asset_sync,我们的想法是资产是从S3或某些CDN(例如cloudfront)提供的,因此不需要成为应用程序slug的一部分.是否有可能在Heroku上的.slugignore中拥有/ assets并且仍然可以获得资产:precompile和asset_sync可以工作吗
我不确定是否存在这样做的方法,但是对于asset_sync,我们的想法是资产是从S3或某些CDN(例如cloudfront)提供的,因此不需要成为应用程序slug的一部分.是否有可能在Heroku上的.slugignore中拥有/ assets并且仍然可以获得资产:precompile和asset_sync可以工作吗?
如果我只将/ assets放在.slugignore中,它们不会使用摘要编译,并且对资产的引用没有指纹,因此不起作用.

解决方法

编辑.slugignore不能在那里工作,因为排除文件在Heroku上的所有编译步骤之前开始.但我们需要编译所有这些,将它们移动到S3,然后才删除它们.

我在我的Rakefile(小脚本)中写了一些代码,它通过扩展过滤器删除所有不可用的文件:

Rake::Task["assets:precompile"].enhance do
    puts 'my assets:precompile hook is started!'
    dir_path = "#{Dir.pwd}/public/sites-fromfuture-net/"
    records = Dir.glob("#{dir_path}**/*")
    records.each do |f|
        if f =~ /.*.png$/ or
                f =~ /.*.jpg$/ or
                f =~ /.*.eot$/ or
                f =~ /.*.svg$/ or
                f =~ /.*.woff$/ or
                f =~ /.*.ttf$/ or
                f =~ /.*.otf$/ or
                f =~ /.*.css$/ or
                f =~ /.*.js$/ or
                f =~ /.*.wav$/ then
            File.delete(f)
        end
    end
    # puts Dir.glob("#{dir_path}**/*")
    puts 'my assets:precompile hook is finished!'
end

还有一件事:我使用了一个heroku-deflater gem,它会压缩所有css和js资产,所以我会删除脚本中的所有.css和.js文件但不删除.css.gz和.js.gz文件,因为铁路资产检查.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读