2
1

More than 3 years have passed since last update.

Refileの使い方

Last updated at Posted at 2020-11-24

ImageMagickをインストール

本番サーバーとか開発環境にimage-magickがないと動かないのでインストールしておく。

インストールされてるか確認
$ convert -version #以下のようにVersion: ImageMagick バージョン名が表示されていればOK
Version: ImageMagick 7.0.10-38 Q16 x86_64 2020-11-16 https://imagemagick.org
Copyright: © 1999-2020 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI 
Delegates (built-in): jng jpeg png tiff zlib
インストール方法(Cloud9の場合)
$ sudo yum -y install libpng-devel libjpeg-devel libtiff-devel gcc
$ cd ~
$ wget http://www.imagemagick.org/download/ImageMagick.tar.gz
$ tar -vxf ImageMagick.tar.gz
$ ls
$ cd ImageMagick-x.x.x-xx
$ ./configure
$ make
$ sudo make install

Gemをインストール

Gemfile
gem "refile", require: "refile/rails", github: 'manfe/refile'
gem "refile-mini_magick"
$ bundle install

画像データを保存するカラムを追加

Userモデルにthumbnailというカラム(サムネイル画像名を保存するカラム)を追加します。

$ rails g migration AddThumbnailToUser thumbnail_id:string
class AddThumbnailToUser < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :thumbnail_id, :string
  end
end
$ rails db:migrate

modelを修正

追加したカラム名から_idを抜いた部分をattachmentとして設定

app/models/user.rb
class User < ApplicationRecord
  attachment :thumbnail # 追加
end

ファイルアップロードのform

<%= f.attachment_field :thumbnail %>でフォームの画像アップロード部分を設置

<%= form_with model: @user, local: true do |f| %>
  <div>
    <%= f.label :name %>
    <%= f.text_field :name, class: 'form-control' %>
  </div>
  <div>
    <%= f.attachment_field :thumbnail %> <!-- 追加 -->
  </div>
  <%= f.submit class: 'btn btn-success' %>
<% end %>

strong_parametersを修正

app/views/controllers/users_controller.rb
class UsersController < ApplicationController

  private
  def user_params
    params.require(:user).permit(:name, :thumbnail) # thumbnail_idではないので注意
  end
end

画像を出力

<%= image_tag attachment_url(@user, :thumbnail, :fill, 100, 100) %>

Runtime Errorが表示された場合

.env
REFILE_SECRET_KEY=hogehoge #エラーメッセージ内Refile.secret_keyの値
$ touch config/initializers/refile.rb
config/initializers/refile.rb
Refile.secret_key = ENV['REFILE_SECRET_KEY']

最後にサーバーを再起動して環境変数を読み込む

2
1
2

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
2
1