LoginSignup
10
12

More than 5 years have passed since last update.

Rails4 - Carrierwave・Rmagick 導入

Last updated at Posted at 2015-07-01

インストール

rmagickは画像をリサイズしたりするのに必要です。

Gemfile
gem 'carrierwave'
gem 'rmagick'

mongoidを使っている場合は、

Gemfile
gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'

を追記

bundle install

ImageMagickをイントールしていないのなら、エラーが出るはず。
Amazon LinuxにImageMagickをインストールするには下記。

yum -y install libjpeg-devel libpng-devel
yum -y install ImageMagick ImageMagick-devel

アップローダ作成

rails g uploader image
app/uploaders/image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base  

 # リサイズしたり画像形式を変更するのに必要
  include CarrierWave::RMagick

 # 画像の上限を700pxにする
  process :resize_to_limit => [700, 700]

  # 保存形式をJPGにする
  process :convert => 'jpg'

  # サムネイルを生成する設定
  version :thumb do
    process :resize_to_limit => [300, 300]
  end

  # jpg,jpeg,gif,pngしか受け付けない
  def extension_white_list
    %w(jpg jpeg gif png)
  end

 # 拡張子が同じでないとGIFをJPGとかにコンバートできないので、ファイル名を変更
  def filename
    super.chomp(File.extname(super)) + '.jpg' if original_filename.present?
  end

 # ファイル名は日本語が入ってくると嫌なので、下記のようにしてみてもいい。
 # 日付(20131001.jpgみたいなファイル名)で保存する
  def filename
    time = Time.now
    name = time.strftime('%Y%m%d%H%M%S') + '.jpg'
    name.downcase
  end

end

mount_uploaderを指定する

class User < ActiveRecord::Base
    # 下記を追加
    mount_uploader :image, ImageUploader
10
12
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
10
12