Movatterモバイル変換


[0]ホーム

URL:


酒と泪とRubyとRailsと

Rails 5.1でfog + CarrierWaveを使い、AWS S3に画像アップ


fog』はRubyのクラウドサービス向けのライブラリ(RubyGem)です。このfogと「CarrierWave」を使うと、ユーザー向けの画像アップロードフォームからS3への画像アップロードが、超簡単に実装できます!

🚌AWSでアクセスキーとシークレットキーを取得

IAMの作成手順は「S3用のIAMの作成」を参照してください。

🗽S3のバケット作成

S3のバケット(Bucket)を作成します。まずはS3を選択。

AWS S3コンソール

S3でバケットを作成します。バケット名はさきほどIAMで設定したのと同じものを設定してください。

AWS S3 バケット作成

🗻CarrierWave + Railsの基本実装

CarrierWave + Railsでの実装例は『CarrierWave + Rails画像アップローダー』をご参照ください。ここでは、上記の実装まで完了している前提で、fogを組み込む部分を中心に説明を書いていきます。

🎳fogの導入(gem)

Gemfileに以下を追加して、bundle installを実行。

gem'fog'

🐞アップローダー(xxx_uploader.rb)の実装

uploaders/xxx_uploader.rbを次のように変更します。

# 初期設定
storage:file
# ↓ 以下のように変更
storage:fog

🚕CarrierWave設定ファイルの実装

config/initialize/carrierwave.rbのファイルを作成して次のように記述します。ACCESS_KEYとSECRET_KEYは「AWSでアクセスキーとシークレットキーを取得」で取得したものを貼り付けます。リージョンは『Regions and Endpoints - Amazon Web Services』を参照。ちなみに東京リージョンならap-northeast-1です。config.fog_directoryconfig.asset_hostには、S3のバケットの名前を入れます。

CarrierWave.configuredo|config|
config.fog_credentials = {
provider:'AWS',
aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
region: ENV['AWS_REGION'],
path_style:true
}
config.fog_public =true
config.fog_attributes = {'Cache-Control' =>'public, max-age=86400'}

config.remove_previously_stored_files_after_update =false

config.fog_directory = ENV['AWS_S3_BUCKET']
config.asset_host = ENV['AWS_S3_URL']
end
# 日本語の文字化けを防ぐ
CarrierWave::SanitizedFile.sanitize_regexp =/[^[:word:]\.\-\+]/

🐯環境変数

これで画像がS3にアップロードされるようになるはずです。

😀参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍

Rails/Modelバリデーションコールバック変更前後の値の確認値の保存・更新アソシエーション削除メソッドSQLの実行日付カラムの設定便利なDB関連設定読込み専用(Read Only)Concern(共通処理)クエリTipsRails/Controllerrenderレシピ集HTTPステータスシンボルIPの取得についてStrong ParametersControllerのTipsRails/ViewHAMLチートシート画像アップロードフォームS3への画像アップロードForm Objectフォームヘルパー検索可能なselectタグenum - selectタグシンプルな検索ボックス別ウィンドウ・フォームRailsいろいろi18nについてRails.cacheメール送信ロギングCapistrano3でデプロイセッション管理環境ごとのYAML設定読込xx分前の時間表記Tipsいろいろ便利ライブラリ簡単Webmock:VCRN+1対策:bullet環境変数の管理: dotenvi18nサポート: i18n-tasksLDAP:net-ldapヘッダ:secureheadersrack-mini-profileractiverecord-precountカバレッジ計測パンくずリスト+MetadataRSpecの記法自動修正アプリランキング取得Unicorn導入手順unicorn-worker-killerRSpecController SpecCapybaraとヘッドレスChromeRequest SpecAPI認証 Spec便利Tipsデザインパターン概要アブストラクトファクトリビルダファクトリメソッドアダプタコンポジットデコレータプロキシコマンドインタプリタイテレータオブザーバストラテジテンプレートメソッドRuby基礎文字列/String配列/Arrayハッシュ/Hash構造体/StructSpawn(コマンド実行)BundlerについてTipsRails 5.1へのアップデートRails 5へのアップデートrbenvバージョンアップpumaをsystemdで動かすURI.encodeとCGI.escapeURLのパラメータを変更処理時間を計測画像JPEG/PNG/GIF判定トラブルシュートNo route matches assets

[8]ページ先頭

©2009-2025 Movatter.jp