Railsアプリケーションにファイルを簡単にアップロードするgem「CarrierWave」と「Refile」
これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール 第9回
前回は、MetaTagsをActiveRecordと関連付けて使う方法を紹介するとともに、パンくずリストを生成するGretelというgemの使い方を紹介しました。今回は、連載2回にわたりファイルアップローダーの各種gemの基本的な使い方を紹介します。
ファイルアップローダー用の各種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 |
この記事は参考になりましたか?
- これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール連載記事一覧
-
- Ruby製HTTPクライアント用gemの「Faraday」を使おう
- Railsアプリケーションにファイルを簡単にアップロードするgem「Shrine」と「Ac...
- Railsアプリケーションにファイルを簡単にアップロードするgem「CarrierWave...
- この記事の著者
-
WINGSプロジェクト 竹馬 力(チクバ ツトム)
< WINGSプロジェクト について> 有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
