はじめに
今回はアプリケーションで画像のアップロードをするための 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 メソッドのコメントアウトを外す
【 解説 】
include CarrierWave::MiniMagick
上記のコードを適用させることで、MiniMagickを使えるようにしています。
def extension_whitelist
%w(jpg jpeg gif png)
end
上記のコードを適用させることで、アップロードできる拡張子を制限しています。
参考
https://github.com/carrierwaveuploader/carrierwave
https://github.com/minimagick/minimagick