在制作中,我在S3上使用Heroku和动态资源。它工作正常。 现在我尝试将我的静态资产发送到S3。我按照本教程https://devcenter.heroku.com/articles/cdn-asset-host-rails31
进行了操作我添加了asset_sync gem,我配置了我的heroku ENVs,我的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文件。
当我检查代码时
<link href="http://s3.amazonaws.com/annoncestest/assets/application-85cc4376a5de3b224db7c0548a44e7cb.css" media="all" rel="stylesheet" type="text/css" />
正如您所看到的,调用的CSS应用程序与我在S3存储桶中的应用程序不同。
你有什么想法吗?
编辑:但它适用于application.js文件,它需要好的文件。但不适用于css文件(application.css和admin.css)。我尝试使用CloudFront,结果是一样的。
答案 0 :(得分:2)
您正在使用Rails 3.2,因此现在更容易。取出asset_sync gem。转到Amazon并查找CloudFront部分(而不是S3)。这是他们的CDN前端。您之前可能已将其设置为使用S3存储桶。
使用Rails 3.2,您所要做的就是设置CloudFront以使用“Origin”。使用原点,您可以提供应用程序的位置而不是存储桶。当用户从CDN请求文件时,CDN将转到您的应用程序获取文件并将其添加到CDN缓存。由于Rails资产使用唯一的文件名,因此您将始终拥有最新的文件。
将CloudFront位置放入rails应用程序作为资产来源。然后部署并让heroku编译您的资产。
将以下内容放入您的production.rb
# Setup amazon CDN
config.action_controller.asset_host = "xxxxxxxxxxxxx.cloudfront.net"
答案 1 :(得分:0)
要关闭票证,我终于通过Heroku的帮助找到了解决方案。 该解决方案位于此其他票证Why Heroku don't use the good manifest.yml
中我希望它会有所帮助!