Carrierwave JSON响应包含相对URL但我想要绝对URL

时间:2018-01-16 00:55:15

标签: ruby-on-rails carrierwave

Carrierwave正在返回这样的JSON响应:

"url": "/mys3bucket/uploads/entrees/photo/32/4c312e9aed37a59319096a03_1.jpg",  

我需要绝对的网址。图像托管在Amazon S3上。我怎样才能获得绝对网址?

我的临时黑客是将以下内容添加到Carrierwave初始化程序中:

config.asset_host = "s3.#{ENV.fetch('AWS_REGION')}.amazonaws.com/mybucket"

1 个答案:

答案 0 :(得分:0)

  

CarrierWave使用文件名和设置的组合   在您的上传器类中指定以生成正确的URL。这个   允许您轻松更换存储后端而无需进行任何操作   对核心应用程序的更改。

也就是说,您无法存储完整的URL。您可以设置CarrierWave的asset_host配置设置,该设置基于环境。

您在生产中使用什么存储空间?这是我的配置,它工作得很好。希望它有所帮助。

CarrierWave.configure do |config|
  config.root = Rails.root

  if Rails.env.production?
    config.storage = :fog
    config.fog_credentials = {
      provider: "AWS",
      aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"],
      aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
      region: ENV["S3_RESION"]
    }
    config.fog_directory = ENV["S3_BUCKET_NAME"]
    # config.asset_host =  ENV["S3_ASSET_HOST"]
  else
    config.storage = :file
    # config.asset_host = ActionController::Base.asset_host
  end
end