Active Storageの概要
Amazon S3
、Google Cloud Storage
、Microsoft Azure Storage
などのクラウドストレージサービスへのファイルのアップロードや、ファイルをActive Record
オブジェクトにアタッチする機能を提供します。
特徴
-
development
とtest
環境向けのローカルディスクベースのサービスを利用できます - アップロードした画像の変形処理
-
PDF
や動画などの画像以外のアップロードファイルの内容を代表する画像の生成
サードパーティソフトへの依存
Active Storage
の機能は、サードパーティソフトウェアに依存しているため、別途インストールが必要
-
libvips
画像解析や画像変形用 -
ffmpeg
動画プレビュー、ffprobeによる動画/音声解析 -
poppler
またはmuPDF
: PDFプレビュー -
image_processing
画像分析や画像加工のため
テーブル構成
Active Storage
は3つのテーブルを利用します。
テーブル名 | 目的 |
---|---|
active_storage_blobs ⠀ ⠀ ⠀ ⠀ ⠀ ⠀⠀⠀⠀⠀⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ |
アップロードされたファイルに関するデータ(ファイル名、Content-Type など)を保存 |
active_storage_attachments |
モデルをblobs に接続するポリモーフィックなジョインテーブル。※モデルのクラス名が変更された場合、このテーブルでマイグレーションを実行し、 record_type を新しいクラス名に更新する必要がある。 |
active_storage_variant_records |
バリアントトラッキングが有効な場合、生成された各バリアント(アップロードされた画像に対する加工処理)に関するレコードを保存する。 |
テーブルの詳細
active_storage_blobs
- ファイルのメタデータ(例: ファイル名、
Content-Type
、サイズなど)を管理 - 主要カラム:
-
id
: 一意の識別子 -
key
: ファイルの一意キー -
filename
: 元のファイル名 -
content_type
: MIMEタイプ -
metadata
: ファイルに関する追加情報 -
byte_size
: ファイルサイズ -
checksum
: ファイルのチェックサム
-
active_storage_attachments
-
Active Record
モデルとactive_storage_blobs
を関連付けるためのポリモーフィックなジョインテーブル - 主要カラム:
-
id
: 一意の識別子 -
name
: アタッチメントの名前(例:avatar
) -
record_type
: 関連付けられるモデルのクラス名 -
record_id
: 関連付けられるモデルのID -
blob_id
: 関連付けられるactive_storage_blob
のID
-
active_storage_variant_records
- 画像のバリアント(リサイズやトリミング...)に関する情報を保存
- 主要カラム:
-
id
: 一意の識別子 -
blob_id
: 関連付けられるactive_storage_blob.id
-
variation_digest
: バリアントの変更内容を示すダイジェスト
-
セットアップ
Active Storageをセットアップする際に必要なコマンドは以下の通りです。
$ bin/rails active_storage:install
$ bin/rails db:migrate
これにより、上記の3つのテーブルがデータベースに作成され、Active Storageの機能を利用できるようになります。
まとめ
以上です。
詳細は以下の公式ガイドをご確認ください🙏