プログラミング

Ruby on Rails5 から「aws-sdk-s3」を使って画像をアップロードする

Ruby on Rails5でプラグイン「aws-sdk-s3」を使う際の覚え書き。

開発環境

  • Ruby: 2.4.1p111
  • Rails: 5.1.2
  • aws-sdk-s3: 1.0.0.rc2

実装

aws-sdk-s3 のインストール

まずは「aws-sdk-s3」のインストールを行います。

Gemfileに以下を追記します。

追記後にbundle install --path vendor/bundleを実行します。

アップローダーとコントローラーの作成

次に画像をアップロードするアップローダーとそれをコントロールするコントローラーを作成します。

※ ビューとルートの設定は割愛させていただきます。

まずはアップローダーです。

イニシャライザでバケットに置くファイルの設定とS3用のインスタンスを初期化しています。

画像を実際にアップロードしている部分はupload_imageメソッドで行なっています。エラーハンドリングは、今回はとりあえずbegin ~ rescueで対応しています。

そしてコントローラー部分。

ビューからの画像データはparams内に入ることを想定。それをアップローダーの初期化に使用し、画像アップロード用のメソッドを叩いています。

画像をアップロードした場合のPOST値は以下のようになります。

おわり

AWSって便利だよね。

参考記事

記事内の写真出典元

Photo by Jorge Reyna on Unsplash

ABOUT ME
maechan
ベンチャー、フリーランス、スタートアップを経験。 開発業務、人事業務に従事していました。 現在は農業系スタートアップ企業でエンジニアとして働いています。 リモートワークをしているノマドサラリーマンです。茶道とワークアウトが趣味です。