使用Carrierwave上传到多个S3存储桶

Dun*_*ock 2 ruby-on-rails amazon-s3 ruby-on-rails-3 carrierwave

我将Ryan Bates在Carrierwave上的RailsCast扩展到多个文件上传器,每个文件上传器都应该上传到自己的S3存储桶.我已经有一个工作了.我的配置如下所示:

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => '(my access key)',
    :aws_secret_access_key  => '(my secret key)'
  }
  config.fog_directory  = 'my-bucket'
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end
Run Code Online (Sandbox Code Playgroud)

我的文件上传器类看起来像这样:

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  process :resize_to_fit => [1024, 1024]
  process :quality => 70
  storage :fog
end
Run Code Online (Sandbox Code Playgroud)

在我的班上,我打电话

mount_uploader :image, ImageUploader
Run Code Online (Sandbox Code Playgroud)

是否可以在每个上传的基础上更改config.fog_directory?在类定义里面?别的地方?谢谢你的帮助.

Taa*_*avo 6

在你的上传者里面:

def fog_directory
  'custom-bucket'
end
Run Code Online (Sandbox Code Playgroud)

请参阅此处以获取可能的选项的完整列表.这几乎都是他们所有人.