Most of our applications use CarrierWave for file uploads. CarrierWave has an integrated processing mechanism for different file versions with support for ImageMagick through CarrierWave::MiniMagick
(which requires the mini_magick
gem). In case your processing runs into an error, CarrierWave will just swallow it and rethrow an error with a very generic message like Processing failed. Maybe it is not an image?
which does not help you finding out what the actual problem is. CarrierWave probably does this for security purposes, but does not even write the real error to logs (which is PITA).
You can, however, get more information in your development environment by setting MiniMagick.logger.level = Logger::DEBUG
or MiniMagick.debug = true
(deprecated) before the processing happens. This will print all ImageMagick calls to stdout and you can get an idea where the problem is coming from.
D, [2023-11-06T12:02:29.443083 #74] DEBUG -- : [0.03s] convert /repo/tmp/1699268548-841333865692559-0001-8387/first_generated_preview_image/sample.jpg -auto-orient -resize 1280x720> /tmp/image_processing20231106-74-zks7q9.jpg
D, [2023-11-06T12:02:29.644009 #74] DEBUG -- : [0.02s] convert /repo/tmp/1699268548-841333865692559-0001-8387/second_generated_preview_image/sample.jpg -auto-orient -resize 1280x720> /tmp/image_processing20231106-74-17enk2.jpg
D, [2023-11-06T12:02:29.831443 #74] DEBUG -- : [0.02s] convert /repo/tmp/1699268548-841333865692559-0001-8387/third_generated_preview_image/sample.jpg -auto-orient -resize 1280x720> /tmp/image_processing20231106-74-jjmtyc.jpg
Sometimes, this will be good enough to see what might cause the error. If it doesn't exactly help you, you will have to edit the carrierwave/processing/mini_magick.rb
code within the CarrierWave gem and place a debugger statement (byebug
) within the rescue
block to be able to spy on the error object.