Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Railsアプリケーションにファイルを簡単にアップロードするgem「CarrierWave」と「Refile」

これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール 第9回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/01/24 11:00

 前回は、MetaTagsをActiveRecordと関連付けて使う方法を紹介するとともに、パンくずリストを生成するGretelというgemの使い方を紹介しました。今回は、連載2回にわたりファイルアップローダーの各種gemの基本的な使い方を紹介します。

目次

ファイルアップローダー用の各種gem

 ファイルアップローダー用のgemを使うことで、Railsアプリケーションに簡単に画像ファイルなどをアップロードする機能を実装することができます。ファイルアップローダー用gemは、さまざまなものがあります。以下は主なgemです。

ファイルアップローダー用の主なgem(スター数は2018年11月時点)
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

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 竹馬 力(チクバ ツトム)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5