ファイルアップローダー「CarrierWave・Shrine・ActiveStorage」の比較
【結論】
・CarrierWaveは、一通りの機能を備えており使用実績も多い。
・Shrineは、必要な機能のpluginだけ選択して読み込む事が出来る。
・ActiveStorageは、Ralis5.2から標準装備されたファイルアップローダー。
【目次】
【本題】
Railsのファイルアップローダーについて
Railsで画像などのファイルをアップロードする機能を実装する場合、ファイルアップローダーが必要になります。 今回はそのファイルアップローダーの中で、主流の三種類の比較を行いたいと思います。
CarrierWave
まず初めに紹介するのは「CarrierWave」です。 かなり古株のファイルアップローダーで、同系統のgemの中でも評価は上位にきています。
使用実績の通り、バリデーションやキャッシュなど一通りの事はこなせます。
Shrine
GitHub - shrinerb/shrine: File Attachment toolkit for Ruby applications
次に紹介するのは、Shrineです。
こちらは、まだ実績の浅いgemですが、必要な機能のpluginだけ選択して読み込ませる事で、動作を軽量化させたり、影響範囲を狭めてデバックを容易にしたりなど、CarrierWaveには無い特徴的な機能を備えています。
ActiveStorage
最後は、ActiveStorageです。
こちらは、Rails5.2から追加された機能で、本当に最近登場したばかりです。
標準で組み込まれているので、導入の容易さがメリットではありますが、まだ開発されて日浅い事もあり、機能面では他のgemに見劣りする部分があるようです(バリデーション・キャッシュ非対応など)