Herokuにのっけている、Railsのアプリケーションでアップロードした画像をS3に保存したい。
その中でいろいろハマったのでメモ。
実装方法は
Rails 超お手軽な画像アップローダー CarrierWave の使い方 | Workabroad.jp
RailsとCarrierWaveでAmazon S3に画像を保存する | Workabroad.jp
などを参考にした。
今回はその中でハマったことを書いていく。
ハマったこと
S3側でやること
Security Credentials → Access Keysから Create New Access Key を押す → Download Key Filesを押す
csvファイルがダウンロードできる。
You will not have access to this secret access key again after this dialog box closes
らしい。
carrierwaveで実装するとき
- multiport => true を入れる。
ファイル名が日本語である場合の対応
app/initializers/carrierwave.rb
CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/
Rmagickを使うとstack level too deepが出た
のでmini_magickをやりました。
Herokuにあげるときの注意点
app/initializers/carrierwave.rb
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => ENV['AWS_ACCESS_KEY'],
:aws_secret_access_key => ENV['AWS_SECRET_KEY'],
:region => ENV['AWS_REGION']
}
config.fog_directory = ENV['S3_BUCKET_NAME']
end
config.cache_storage = :fog #キャッシュの場所をS3に変更
config.cache_dir = "#{Rails.root}/tmp/uploads" #for Heroku
end