1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Rails]画像アップロードの方法

Posted at

必要なgem

・carrierwave
・MiniMagick

導入手順

####carrierwaveの導入

1.Gemfileに以下を記述する。

gem 'carrierwave', '~> 1.0'

忘れず実行する。

$ bundle install

2.CarrierWaveのアップローダーを作成する。

$ rails g uploader image

3.Userモデルのimageカラムと、先ほど作成したアップローダーImageUploaderと紐付けをします。

user.rb
class Photo < ApplicationRecord
  ...
  mount_uploader :image, ImageUploader
end

MiniMagickの導入

1.imagemagickを開発環境にインストールする

$ brew install imagemagick

※cloud9の人はこちらのコマンド

$ sudo yum update
$ sudo yum install -y ImageMagick

2.Gemfileに以下を記述する。

gem "mini_magick"

忘れず実行する。

$ bundle install

3.app/uploaders/image_uploader.rbを修正する。
※修正する点は以下の3点です。
・4行目のすでに生成されているコードのコメントを外す
・「version :medium」というサイズを指定するコードを追加
・extension_whitelistメソッドのコメントアウトを外す

image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base
  # Include RMagick or MiniMagick support:
  # include CarrierWave::RMagick
  include CarrierWave::MiniMagick 
 # ここのコメントアウトを外す

  # Choose what kind of storage to use for this uploader:
  storage :file
  # storage :fog

  # Override the directory where uploaded files will be stored.
  # This is a sensible default for uploaders that are meant to be mounted:
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  # Provide a default URL as a default if there hasn't been a file uploaded:
  # def default_url(*args)
  #   # For Rails 3.1+ asset pipeline compatibility:
  #   # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
  #
  #   "/images/fallback/" + [version_name, "default.png"].compact.join('_')
  # end

  # Process files as they are uploaded:
  # process scale: [200, 300]
  #
  # def scale(width, height)
  #   # do something
  # end

  # Create different versions of your uploaded files:
  # version :thumb do
  #   process resize_to_fit: [50, 50]
  # end

  version :medium do
    process resize_to_fill: [1080, 1080]
  end
  # 上記の記述を追記する。

  # Add a white list of extensions which are allowed to be uploaded.
  # For images you might use something like this:

  # ここのコメントアウトを外す
  def extension_whitelist
    %w(jpg jpeg gif png)
  end

  # Override the filename of the uploaded files:
  # Avoid using model.id or version_name here, see uploader/store.rb for details.
  # def filename
  #   "something.jpg" if original_filename
  # end
end
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?