ウェブサービスを作っています。

CarrierWave で Amazon S3 にアップロードする

という前提です。 CarrierWave のバージョンは 0.10.0 です。

Gemfile

gem 'carrierwave'
gem 'fog'
gem 'dotenv-rails'

config/initializers/carrierwave.rb

CarrierWave.configure do |config|
  if Rails.env.production?
    config.fog_credentials = {
      provider: 'AWS',
      aws_access_key_id: ENV['S3_ACCESS_KEY_ID'],
      aws_secret_access_key: ENV['S3_SECRET_ACCESS_KEY'],
      region: ENV['S3_REGION'],
      path_style: true,
    }
    config.fog_directory = ENV['S3_BUCKET_NAME']
    config.storage :fog
    config.asset_host = ENV['S3_ASSET_HOST']
  else
    config.storage :file
  end
end

.env

S3_ACCESS_KEY_ID=XXX
S3_SECRET_ACCESS_KEY=XXX
S3_REGION=ap-northeast-1
S3_BUCKET_NAME=img.example.com
S3_ASSET_HOST=http://img.example.com