HerokuとS3を連携
S3の初期設定
この記事のバケットの作成のところ(Imagemagikの導入の手前)までの通りすればできました。
【Rails】S3へ『CarrierWave+fog』を使って画像アップロードする方法 | vdeep
Gemfile
こちらを追加し、bundle install
gem 'fog-aws', group: :production gem 'carrierwave', '~> 1.0'
○_uploader/rbに以下を追記
if Rails.env.production? storage :fog else storage :file end
carrier_wave.rb
$ touch config/initializers/carrier_wave.rb
でファイル作成
作成したファイルに以下を追記
require 'carrierwave/storage/abstract' require 'carrierwave/storage/file' require 'carrierwave/storage/fog' CarrierWave.configure do |config| if Rails.env.production? config.storage = :fog config.fog_provider = 'fog/aws' config.fog_credentials = { # Amazon S3用の設定 :provider => 'AWS', :region => ENV['S3_REGION'], :aws_access_key_id => ENV['S3_ACCESS_KEY'], :aws_secret_access_key => ENV['S3_SECRET_KEY'] } config.fog_directory = ENV['S3_BUCKET'] else config.storage :file config.enable_processing = false if Rails.env.test? end end
ここの下の画像の人の例を参考にしました。
herokuの環境変数の設定
S3の初期設定で取得できているcredentials を前項のENVの[ ]内の変数を下記コマンドで設定していく。
heroku config:set S3_REGION= heroku config:set S3_ACCESS_KEY= heroku config:set S3_SECRET_KEY= heroku config:set S3_BUCKET=
※credentialsがわからなくなったら、アクセスキーIDとREGIONは次から確認できる。 ルートアカウント認証情報を使用してサインイン→ヘッダーのユーザ名のdropdownからセキュリティ認証情報を選択→左のユーザー→ユーザーを選択→認証情報タブ secret keyはどう確認するかわからないからユーザーを作った時にcredentials.csvをダウンロードしておこう!
デプロイ
これでデプロイしてみるとできている。できなければ、DATABASEのリセットとかを試してみるといいかも。