Rails
ActiveStorage

ActiveStorageでS3へファイルをアップロードする

More than 1 year has passed since last update.

単純にS3へのファイルアップロードした際のメモ。

準備編

Rails 5.2.0.alphaを使用する。

下記ページのSetting up ActiveStorage for Railsの項目に従ってGemfileの書き換えやDBのマイグレーション、active_storageのプロジェクトへのインストールを行う。
http://blog.jasonkim.ca/blog/2017/11/13/Using-ActiveStorage-Today/

storage.yml

bin/rails active_storage:installを実行すると、config以下にstorage.yml
ファイルが生成されるのでそこに必要事項を記入する。
今回はamazon以下に自分が管理しているS3のバケット情報を記入。

amazon:
  service: S3
  access_key_id: XXXXXXXXXXXXXXXXXX
  secret_access_key: XXXXXXXXXXXXXXXXXX
  region: ap-northeast-1
  bucket: your.bucket.name

アップロード

下記の用なコードで単純なアップロードが可能。

ActiveStorage::Blob.create_after_upload!(io: StringIO.new('qwerty'), filename: 'test_file')

上記コードでファイル内容がqwertyとなるファイルをアップロードしている。
S3のバケット上でのファイル名はznzAavPtDwXdqzYoP4eAPWgyのようなstandard secure-token formatとなる。