Rails引用模型Rails 4和CDN中的资产

时间:2014-06-04 19:40:22

标签: ruby-on-rails-4 model cdn assets

我在模型中有一个方法,它将图像URL作为字符串返回,例如:" assets / myImage.png",这在没有CDN的生产中很有效,图像正在服务。

使用CDN(Cloudfront)仅提供带有指纹的文件或我读过的内容。因此,当我打开我的Google控制台时,它会显示" assets / myImage.png",而不是指纹版本,因此它显然无法显示图像。

简而言之:我需要知道如何使用辅助方法在模型中返回图像的指纹版本。

任何帮助都会很棒!

3 个答案:

答案 0 :(得分:1)

我相信您可以使用以下方式访问Sprockets助手:

  • self.class.helpers.asset_path('application.css')
  • self.class.helpers.asset_digest_path('application.css')

这两种方法都是向后访问Sprockets用于生产中指纹资产的帮助程序的方法。这有用吗?

基于this SO回答

答案 1 :(得分:0)

您应该能够从ruby aws-sdk gem获取URL。

以下是AWS::CloudFront::Client

的文档

更新:这个答案错了​​。请参阅下面我的不同答案。

答案 2 :(得分:0)

我实际上并不认为我的上述答案会奏效。相反,试试这个instide production.rb

config.action_controller.asset_host = "d24xjtg100euk4.cloudfront.net"

这应该将CDN网址附加到所有铁路助手(例如image_helper)。

您还可以滚动自己的自定义助手,获取资产位置并将其与CDN网址连接。

基于此博文:SETTING UP A CLOUDFRONT CDN FOR RAILS

编辑:使用Sprockets辅助方法在下面发布另一个答案。