Sử Dụng Carrierwave Với S3

Gemfile

1
2
gem 'fog', require: 'fog/aws'
gem 'carrierwave'

Class Uploader

1
storage :fog

File cấu hình config/initializers/carrierwave.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
require 'carrierwave/storage/fog'

CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => Rails.application.credentials.access_key_id,
:aws_secret_access_key => Rails.application.credentials.secret_access_key,
:region => Rails.application.credentials.s3_region,
:path_style => true,
:host => 's3.us-east-2.amazonaws.com',
:endpoint => 'https://s3.us-east-2.amazonaws.com'
}
config.cache_dir = "#{Rails.root}/tmp/uploads"
config.fog_directory = Rails.application.credentials.s3_bucket
config.fog_public = true
config.fog_attributes = { 'Cache-Control' => "max-age=#{10.day.to_i}" }
config.storage = :fog
end

Acess File uploaded

Instance.field_name_image.url (get link s3)

Source demo

Tại đây