gpt4 book ai didi

ruby-on-rails - S3 的 Assets 路径问题

转载 作者:行者123 更新时间:2023-12-02 11:56:34 25 4
gpt4 key购买 nike

在生产中,我在 S3 上使用 Heroku 和动态 Assets 。效果很好。现在我尝试将我的静态 Assets 发送到 S3。我按照这个教程https://devcenter.heroku.com/articles/cdn-asset-host-rails31

我添加了 asset_sync gem,我配置了我的heroku ENV,我的 config/production.rb 并运行 heroku run rake assets:precompile

看起来工作正常:

    Using: Directory Search of /app/public/assets    Uploading: assets/application.js.gz    Uploading: assets/application.css    Uploading: assets/application-8977252f192f3e36dbd6b5142de920e3.css.gz    Uploading: assets/eurof35-webfont-4ea19cda003d589e688cedcf9f79ddd6.eot    Uploading: assets/application.css.gz    Uploading: assets/application-8977252f192f3e36dbd6b5142de920e3.css    Uploading: assets/application-a904f1bc7724b6f68e1f8d38d03a093e.js.gz    Uploading: assets/application-a904f1bc7724b6f68e1f8d38d03a093e.js    Uploading: assets/application.js    AssetSync: Done.

但是,当我加载网站时,没有 CSS 或 JS 文件。当我检查代码时有 <code><link href="http://s3.amazonaws.com/annoncestest/assets/application-85cc4376a5de3b224db7c0548a44e7cb.css" media="all" rel="stylesheet" type="text/css" /></code>

如您所见,调用的 CSS 应用程序与我的 S3 存储桶中的 CSS 应用程序不同。

你有什么想法吗?

编辑:但是它对于 application.js 文件工作得很好,它需要好的文件。但不适用于 css 文件(application.css 和 admin.css)。我尝试使用 CloudFront,结果是一样的。

最佳答案

您正在使用 Rails 3.2,所以现在更容易了。取出 asset_sync gem。转到 Amazon 并查找 CloudFront 部分(而不是 S3)。这是他们的 CDN 前端。您之前可能已将其设置为使用您的 S3 存储桶。

使用 Rails 3.2,您所要做的就是设置 CloudFront 以使用“Origin”。通过源,您可以提供应用程序的位置而不是存储桶。当用户从 CDN 请求文件时,CDN 将前往您的应用程序获取文件并将其添加到 CDN 缓存中。由于 Rails Assets 使用唯一的文件名,您将始终拥有最新的文件。

将 CloudFront 位置放入您的 Rails 应用程序中作为 Assets 源。然后部署并让heroku 编译您的 Assets 。

将以下内容放入您的 production.rb

  # Setup amazon CDN
config.action_controller.asset_host = "xxxxxxxxxxxxx.cloudfront.net"

关于ruby-on-rails - S3 的 Assets 路径问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9889297/

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