Carrierwaveより簡単で速い画像アップローダー Refile

Shunsuke Sawada

Rails の画像アップロードはずっとCarrierwaveを使っていたけど、
これからはRefileを使ってもいいかもしれない。

https://github.com/refile/refile

使い方はシンプルなのに、いろいろ凄い。
だけどインストールに手間取ったので、メモ。
  

1
2
3
gem 'aws-sdk'
gem 'mini_magick'
gem 'refile', require: ['refile/rails', 'refile/image_processing']

  
基本はドキュメント通りなので、そこは割愛します。
ポイントだけ。

画像の表示

Refileは大きさを指定されると、勝手に画像を作ってくれるというすごいやつ。
なので普通ではつまずかない表示で悩むこともある。
  
SSL認証

表示がうまくいかないので、
ログを見てみるとこんな感じだった。

1
2
3
4
Started GET "/attachments/profile_images/fill/70/70/xxxxxxxxxxxxxxxxxxxxxxxxx/image.jpg" for 192.168.33.1 at 2015-03-09 16:00:05 +0900
[AWS S3 200 0.14779 0 retries] head_object(:bucket_name=>"my-bucket",:key=>"profile/images/xxxxxxxxxxxxxxxxxxxxxxxxx")  

Refile::App: Error -> SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

RubyのSSL認証がなんかおかしいとな。
これはこの記事が参考になりました。感謝。
エラー:OpenSSL::SSL::SSLError SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed - komiyakの通り道
ruby on rails - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed - Stack Overflow

  
ImageMagick

SSL認証がうまくいったと思ったら今度はこんなエラー。

1
2
Refile::App: Error -> `gm convert /tmp/open-uri20150309-2422-12wbcnv /tmp/open-uri20150309-2422-12wbcnv` failed with error:
gm convert: No decode delegate for this image format (/tmp/open-uri20150309-2422-12wbcnv).

  
ドキュメントの通り、RefileはImageMagickが必要。

We're requiring both Refile's Rails integration and image processing via the MiniMagick gem, which requires ImageMagick to be installed.

それと、JPGとかPNGとかの画像形式をサポートするライブラリが必要らしい。
インストールしましょ。
ImageMagicのインストール - Road to Myself -- 自分を取り戻せ!!
"no decode delegate for this image format" の対処法 - DQNEO起業日記
  
そもそもImageMagickがなければ、インストールしましょう。
CentOS に ImageMagick, RMagick のインストール | akkunchoi@github
  
基本的な使い方はまた書こうと思います。
  

5
Shunsuke Sawada