LoginSignup
7
3

More than 5 years have passed since last update.

RailsのUploadedFileクラスのreadメソッドは一度しか使えないので注意

Last updated at Posted at 2018-05-14

はじめに

RailsのUploadedFileクラスのreadメソッドが一度しか使用できないのを知らなかったため、
めちゃくちゃハマったので、記録しておきます。

Error内容

Formでアップロードした画像をreadメソッドでバイナリデータを取得した際に出ました。

以下は、サンプルコード

obj1 = MiniMagick::Image.read(image_params[:image].read)
obj2 = MiniMagick::Image.read(image_params[:image].read)
MiniMagick::Invalid (`identify /tmp/mini_magick20180514-16853-k8cps` failed with error:
identify: no decode delegate for this image format `' @ error/constitute.c/ReadImage/512.
):

Error内容はそのFormatに対応してないよとのことですが。。

解決策

image_bin = image_params[:image]read
obj1 = MiniMagick::Image.read(image_bin)
obj2 = MiniMagick::Image.read(image_bin)

とにかく一度変数に格納してしまえば良かったっぽいです。

まとめ

単純にUploadedFileクラスのreadメソッドは2回使えないらしいです。

知ってる人には当たり前かもしれないが、知らない私からすると謎すぎて解決にすごい時間がかかりました。

誰かのためになることを祈っています。

7
3
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
7
3