-->

把/资产.slugignore对Heroku的部署与asset_sync(S3 / CDN)(put

2019-07-03 10:49发布

我不知道是否有一个现有的方式做到这一点,但与asset_sync的想法是,资产从S3或一些CDN服务(如CloudFront的),因此不需要将应用蛞蝓的一部分。 是否有可能有/在.slugignore资产在Heroku上,仍然可以得到资产:预编译和asset_sync工作? 如果我只是把/资产.slugignore,它们不与消化编译和资产引用是没有指纹,因此不工作。

Answer 1:

编辑.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宝石,其中的gzip所有的CSS和JS的资产,所以我删除所有的CSS和脚本.js文件,但不删除.css.gz和.js.gz文件,因为轨资产检查。



Answer 2:

你读过这篇文章? - https://devcenter.heroku.com/articles/cdn-asset-host-rails31

在“正在同步资产”部分,似乎表明资产能够在Heroku上进行预编译,然后asset_sync创业板将上传他们从那里到您的S3存储(如预编译步骤的一部分),文章并没有提及使用.slugignore的



文章来源: put /assets in .slugignore for Heroku deployments with asset_sync (S3/CDN)