LoginSignup
1
0

More than 3 years have passed since last update.

CarrierWaveの導入

Posted at

はじめに

今回はアプリケーションで画像のアップロードをするための CarrierWave を導入する方法についてまとめます。

1. CarrierWave の導入

CarrierWave は、Ruby on Rails のWebアプリケーションで簡単にファイルアップロードするための機能を提供してくれるライブラリです。

CarrierWave の Gem をインストール

以下のコードをGemfile に記述してください。

gem 'carrierwave', '~> 2.0'

以下のコマンドを実行します。

bundle install

アップローダーを生成

以下のコマンドを実行してください。

rails g uploader ファイル名

【 例 】profile_image_uploader.rbを作成する場合

rails g uploader ProfileImage

モデルにアップローダーをマウント

以下のコードをモデルに記述してください。
【 例 】ProfileImageアップローダーをマウントする場合

mount_uploader :profile_image, ProfileImageUploader

【 補足 】
マウントは「取り付ける、搭載する」などの意味がある

2. MiniMagick の導入

MiniMagick は画像加工をしてくれるgemです。MiniMagick を使用するためにはImageMagickという画像処理ライブラリを導入する必要があります。

PCにImageMagickがインストールされているか確認

以下のコマンドを実行してください。

convert -version

「Version: ImagiMagick ~」と表示されていれば、PCにはImageMagickは入っているので、そのまま MiniMagick のインストールを行います。

以下のコマンドを実行してください。

brew install imagemagick

コードを追加したらgemを反映させるためにbundle installを実行します。

bundle install

アップローダーファイルの修正

次に、先ほど作成したapp/uploaders/profile_image_uploader.rbを修正します。

修正するのは、以下の2点です。

・4行目のコメントアウトを外す
・extension_whitelist メソッドのコメントアウトを外す

【 解説 】

profile_image_uploader.rb
include CarrierWave::MiniMagick

上記のコードを適用させることで、MiniMagickを使えるようにしています。

profile_image_uploader.rb
def extension_whitelist
  %w(jpg jpeg gif png)
end

上記のコードを適用させることで、アップロードできる拡張子を制限しています。

参考

https://github.com/carrierwaveuploader/carrierwave
https://github.com/minimagick/minimagick

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0