ファイルアップローダー「CarrierWave・Shrine・ActiveStorage」の比較

【結論】

・CarrierWaveは、一通りの機能を備えており使用実績も多い。

・Shrineは、必要な機能のpluginだけ選択して読み込む事が出来る。

・ActiveStorageは、Ralis5.2から標準装備されたファイルアップローダー。

【目次】

【本題】

Railsのファイルアップローダーについて

Railsで画像などのファイルをアップロードする機能を実装する場合、ファイルアップローダーが必要になります。 今回はそのファイルアップローダーの中で、主流の三種類の比較を行いたいと思います。

CarrierWave

GitHub - carrierwaveuploader/carrierwave: Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks

まず初めに紹介するのは「CarrierWave」です。 かなり古株のファイルアップローダーで、同系統のgemの中でも評価は上位にきています。

使用実績の通り、バリデーションやキャッシュなど一通りの事はこなせます。

Shrine

GitHub - shrinerb/shrine: File Attachment toolkit for Ruby applications

次に紹介するのは、Shrineです。

こちらは、まだ実績の浅いgemですが、必要な機能のpluginだけ選択して読み込ませる事で、動作を軽量化させたり、影響範囲を狭めてデバックを容易にしたりなど、CarrierWaveには無い特徴的な機能を備えています。

ActiveStorage

Active Storage の概要 - Railsガイド

最後は、ActiveStorageです。

こちらは、Rails5.2から追加された機能で、本当に最近登場したばかりです。

標準で組み込まれているので、導入の容易さがメリットではありますが、まだ開発されて日浅い事もあり、機能面では他のgemに見劣りする部分があるようです(バリデーション・キャッシュ非対応など)