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"
答案 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