ファイルアップローダー用の各種gem
ファイルアップローダー用のgemを使うことで、Railsアプリケーションに簡単に画像ファイルなどをアップロードする機能を実装することができます。ファイルアップローダー用gemは、さまざまなものがあります。以下は主なgemです。
gem | GitHubスター数 | 特徴 |
---|---|---|
Paperclip | 9,023 | 最も実績あるgemだが、ActiveStorageに移行推奨。 |
CarrierWave | 8,192 | 複数ファイルアップロード、バリデーション、キャッシュなど一通りの基本機能がある。アップロード時にファイルを変換する方式。 |
Dragonfly | 2,084 | 画像のリサイズや変換など、画像加工に主眼を置いたgem。かなり古め。 |
Refile | 2,454 | CarrierWaveの作者jnicklasが後継のgemとして開発。Dragonfly同様、ファイルアップロード後にアクセス時に指定したサイズなどで変換する方式。 |
Shrine | 1,993 | 使用する機能をプラグイン形式で提供。S3などへのダイレクトアップロード機能もある。最近開発が活発なgem。 |
[Tips]ActiveStorageとは
ActiveStorageは、Rails5.2から導入されたファイルアップローダーです。5.2以前まではファイルアップロード機能を実装するには上記のgemなどを使っていましたが、5.2からはRailsだけで簡単に実装することができるようになりました。Amazon S3などクラウドストレージを使うことが前提の設計になっており、ActiveRecordとの相性も良いのが特徴です。
本連載では、ファイルアップローダー用の主なgemのうち、CarrierWave/Refile/Shrineを取り上げ、基本的な使い方を紹介します。また、2回目の連載では、ActiveStorageについても紹介します。
Railsアプリケーションの準備
前回の連載で使用したものを流用するため、環境構築手順については割愛します。
bin/rails sコマンドでpumaサーバーを起動してトップページにアクセスすると「記事一覧」へのリンクが表示されることを確認してください。
なお、gemによって異なるマイグレーションを行う関係で、サンプルファイルでは以下のようにブランチごとにまとめていますので、ご参考までに示しておきます。
gem | ブランチ名 |
---|---|
CarrierWave | feature/carrierwave |
Refile | feature/refile |
Shrine | feature/shrine |
ActiveStorage | feature/active_storage |