LoginSignup
4
4

More than 5 years have passed since last update.

Herokuに画像を投稿する方法

Last updated at Posted at 2019-04-04

【前提】
・localでの画像投稿の設定はできてる
・画像投稿は gem carrierwave を使用しての投稿

AWS S3を使う

Railsでの開発をしていてHerokuにアップしたところ、git上に入っている画像は表示されていた(背景画像とかロゴ画像とか)がサービス利用の中で画像を投稿したときの表示ができていなかったので調べたところAWS S3というサービスを使うらしい。
AWSは今まで使ったことがなかったが意外と簡単に設定ができた。

アカウント登録

こちらから登録できます。
以下の記事をよんでAWSってこわ、、、っていうイメージがあったので私を含む初学者の方の取り扱いには気をつけてください、、、(私もこうなりかけた)
登録から1年間は利用無料らしいです。
初心者がAWSでミスって不正利用されて$6,000請求、泣きそうになったお話。 - Qiita

やることリスト

アカウント登録後に作るものとしては
AWS関連
 - IAMグループ、ユーザー登録(ここでCSVファイルダウンロード←Macで普通に開けなくてもエディタで開けます)
 - S3バケットの作成
Rails関連
 - gemインストール("fog-aws")
 - config/initializers/carrierwave.rb作成&設定記述
 - uploadersフォルダのファイルに画像の格納場所記述

AWS関連の設定はこちらの記事を読み進めて行けば確実にできます!
【Rails】S3へ『CarrierWave+fog』を使って画像アップロードする方法
【Rails5】AWS S3+CarrierWave+Fog::AWSを利用して画像アップロード機能を作成する

Railsでの設定

gemインストール

Gemfile.
gem 'fog-aws' 
$ bundle install

作成&設定記述(keyはべた書き禁止!!!!!)

config/initializers/carrierwave.rb
require 'carrierwave/storage/abstract'
require 'carrierwave/storage/file'
require 'carrierwave/storage/fog'

if Rails.env.production?
  CarrierWave.configure do |config|
    config.fog_provider = 'fog/aws'
    config.fog_credentials = {
      provider: 'AWS',
      aws_access_key_id: 'IAM登録で取得したアクセスキー',
      aws_secret_access_key: 'IAM登録で取得したシークレットアクセスキー',
      region: 'ap-northeast-1'  # S3バケット作成時に指定したリージョン。左記は東京を指す
    }
    config.fog_directory  = 's3-rails-image-uploader' # 作成したS3バケット名
  end
  # 日本語ファイル名の設定
  CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/ 
end
uploaders/image_uploader.rb
  #fogに画像格納
  if Rails.env.production?
    storage :fog
  else
    storage :file
  end

簡単!!!😍

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4