CarfrontWave与Cloudfront生成错误的URL

时间:2016-08-04 05:05:47

标签: ruby-on-rails amazon-s3 asset-pipeline carrierwave amazon-cloudfront

您好我正在使用Cloudfront和CarrierWave和S3。由于某种原因,在我的应用程序中,当使用image_tag时,我的cloudfront路径的URL非常奇怪,而且我不知道哪里出错了。这是我的carrierwave配置文件

CarrierWave.configure do |config|
config.fog_provider = 'fog/aws'                        # required

config.fog_credentials = {
provider:              'AWS',                        # required
aws_access_key_id:     'accesskey',                        #   required
aws_secret_access_key: 'secretaccess key',                          # required
region:                'us-east-1',                  # optional, defaults to 'us-east-1'
}

config.fog_directory  = 'bwautosales'                          # required
# config.asset_host = 'randomletters.cloudfront.net'
config.asset_host = 'randomletters.cloudfront.net'
config.fog_public = true
config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" } #  optional, defaults to {}
 end

和我的 production.rb 文件

 config.action_controller.asset_host = 'randomletters.cloudfront.net'

但在我的视图中,当我执行类似

的操作时
 <%= link_to image_tag(car.images[0], class: "img-responsive right-block", id: index), car %>

我明白了 -

src = https://randomletters.cloudfront.net/images/randomletters.cloudfront.net/uploads/car/images/28/car.png"

我确定这是一个简单的解决方法但不知道我哪里出错了。任何帮助将不胜感激!

图片上传器`

class ImageUploader < CarrierWave::Uploader::Base

include CarrierWave::MiniMagick

storage :fog

def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

def extension_whitelist
 %w(jpg jpeg gif png)
end

end

`

2 个答案:

答案 0 :(得分:3)

在Carrierwave初始化程序中更改行,
config.asset_host = 'randomletters.cloudfront.net'config.asset_host = 'http://randomletters.cloudfront.net' 以获取所需的云端网址。

您也可以从Production.rb中删除行config.action_controller.asset_host = 'randomletters.cloudfront.net',因为载波从云端网址中提取。

CarrierWave.configure do |config|
    config.fog_provider = 'fog/aws'                        

    config.fog_credentials = {
    --------------
    --------------
    }

    config.fog_directory  = 'bwautosales'                          
    config.asset_host = 'http://randomletters.cloudfront.net' # please check the change in this line.
    config.fog_public = true
    config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" } #  optional, defaults to {}
end

答案 1 :(得分:0)

为了给Sravan的答案增加可信度,我遇到了同样的问题,当我按照他的指示时,它开始正常工作。如果您忽略了来自

http://
config.asset_host = <>

它变得混乱,并尝试使用与您网站的域名不同的路径。我遇到了同样的问题,但在网址的开头添加 http:// 修复了它。