SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

ファイルアップローダー用の各種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

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
CarrierWaveの導入

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール連載記事一覧

もっと読む

この記事の著者

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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11329 2019/01/24 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング