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

标签 ruby-on-rails heroku amazon-s3 asset-pipeline assets

在生产中,我在 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/

相关文章:

php - 如何在 Heroku 上部署静态 Web 应用程序

python - 在浏览器中将 PUT 上传到 S3 时忽略内容类型?

amazon-s3 - 在 s3 控制台上上传文件夹时触发 Aws Lambda

ruby-on-rails - Time gt 查询不适用于 mongoid 和 ruby​​ on rails

python - 注册用户或尝试迁移时获取空值会导致完整性错误

java - 使用 Java 从 S3 检索文件并将它们放入 EC2 Linux 实例

amazon-s3 - Kinesis Firehose KMS 加密

ruby-on-rails - Rails,一年中的某一天

ruby-on-rails - has_many :through 的源反射错误

ruby-on-rails - 如何删除 shoulda 测试中的重复项?