はじめに
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回使えないらしいです。
知ってる人には当たり前かもしれないが、知らない私からすると謎すぎて解決にすごい時間がかかりました。
誰かのためになることを祈っています。