gpt4 book ai didi

ruby-on-rails - Heroku 的 AssetSync gem 替代品

转载 作者:行者123 更新时间:2023-12-04 03:36:35 24 4
gpt4 key购买 nike

最近,在我最近一次部署到 Heroku 时,我收到了一个警告 advising not to use AssetSync .

remote: ###### WARNING:
remote: You are using the `asset_sync` gem.
remote: See https://devcenter.heroku.com/articles/please-do-not-use-asset-sync for more information.

我们试图通过使用 AssetSync 解决的最初问题是,由于我们的应用程序中的大型 Assets 导致我们获得了巨大的 slug 大小。在 Heroku 允许我们使用的 300MB 中,我们可能使用了接近 230MB——尽管我们的 git repo 只有大约 80MB。

我们通过使用 AssetSync 将所有已编译的 Assets 同步到 S3 存储桶以通过 Cloudfront 提供服务来解决此问题。 AssetSync 运行后,我们有一个钩子(Hook)可以删除所有预编译的 Assets 以减少 slug 的大小。基本上,slug 编译期间的工作流程如下所示:
  • 让 Heroku 预编译 Assets
  • AssetSync 将所有编译的 Assets 同步到 S3
  • 已编译 Assets 的所有本地副本都将被删除

  • 链接的文章就为什么不好以及改用什么提出了几点意见。

    Using Asset Sync can cause failures. It is difficult to debug, unnecessary, and adds extra complexity. Don’t use it. Instead, use a CDN.

    [...]

    You should now use a CDN instead. Rather than copying your assets over to S3 after they are precompiled, the CDN grabs them from your website. Here are some reasons why that’s better.

    Canonical assets

    [...] It allows you to have single, authoritative places where you store information. If you need to change that information, you only need to change it in one place. [...] What happens if someone has a failed deploy after assets get synced? What if someone modifies a file in the S3 bucket? Instead of fixing one copy of assets, now you must fix two.

    Deploy determinism

    If you’re debugging inside of a dyno with heroku run bash and you run rake assets:precompile this doesn’t just modify your local copy. It actually modifies the copy on S3 as well. [...] The sync part of asset_sync can also fail if there’s a glitch in the network. What if you only write part of a file, or only half of your assets are synced? These things happen.



    尽管我同意他们的观点,但问题仍然存在:部署一个 Heroku 应用程序的推荐方法是什么,当预编译的 Assets 存储在 slug 中时会变得巨大?

    最佳答案

    问题是哪些 Assets 文件使蛞蝓变得巨大?

    默认情况下,Rails Assets 管道应仅用于小型且有限的内部 Assets (如 JS、CSS、一些 Logo 等)。

    将大量外部文件或大文件存储为 Rails Assets 并不是一个好主意,除了管道之外还有很多原因(比如它会让你的 Git 目录也变得很大)。

    关于ruby-on-rails - Heroku 的 AssetSync gem 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34168324/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com