RubyOnRails/Carrierwaveとminimagickの導入

くそー変なところでつまづいてた〜〜〜。

 

ChatSpaceでずっとundefine method 'url'がでていて、変数として使用しているurlなんてmessage.image.url、つまりメッセージから取得した画像のurlしかなかったのです。

で、メッセージテーブルにurlカラムなんてないし、imageテーブルなんて作ってないし一体どういうことなんだと思っていたら。

 

Carrierwaveとminimagickを導入すればurlメソッドのようなものが使えて、メッセージから取得したimageファイルにurlを埋め込める・・らしい。

 

つまりCarrierwaveとminimagickを導入し忘れてたってこと!

今回はその導入方法を手早く書いていくぞ!

 

まずgemの記載。

gemfile

省略
gem 'mini_magick'
gem 'carrierwave'

 

忘れずにインストール!

ターミナル

bundle install

 

イメージアップローダーをジェネレートする

ターミナル

rails g uploader image

 

モデルに記述。

app/models/message.rb

省略
mount_uploader :image, ImageUploader

 

最後にイメージアップローダーに記述。

app/uploaders/image_uploader.rb

省略
include CarrierWave::MiniMagick
process resize_to_fit: [200, 200]
省略

include~~はimage_uploaderの4行目くらいでコメントアウトされてるので、コメントアウトを解除します。

process resize_to_fitは画像を投稿する際のサイズを決定しています。