Я использую CarrierWave + rmagick gems для загрузки изображения на сервер. Когда я загружаю обычный файл, все идет хорошо. Но когда я загружаю неверный файл, ошибка формы не отображает ошибку CarrierWave, она отображает ошибку, которая появляется при запуске rmagick.Изменение сообщения об ошибке CarrierWave при обнаружении ошибки от rmagick
Простой пример. У меня есть User
модели, и загрузчик внутри него так:
class User < ActiveRecord::Base
...
mount_uploader :avatar, PictureUploader
end
(avatar
является строкой field
)
Теперь загрузчик определяется здесь:
class BaseImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
storage :fog
def extension_white_list
%w(jpg jpeg gif png)
end
end
class PictureUploader < BaseImageUploader
def default_url
'placeholder.png'
end
def store_dir
'images/pictures'
end
version :thumb do
process resize_to_fit: [50, 50]
end
version :medium do
process resize_to_fill: [400, 400]
end
version :small_square do
process resize_to_fill: [200, 200]
end
end
Затем я создаю пустым файлом, например, с touch ~/Desktop/file.jpg
и попыткой загрузить его через форму, и здесь я получаю ошибку проверки:
Avatar Failed to manipulate with rmagick, maybe it is not an image? Original Error: Empty input file `<foldername>/public/uploads/tmp/1470905765-10111-5893/thumb_file.jpg' @ error/jpeg.c/JPEGErrorHandler/322
Я попытался с помощью ming_magick вместо RMagick, но результат тот же (с немного другим сообщением об ошибке)
Могу ли я сделать что-то, чтобы изменить это сообщение проверки, чтобы сказать что-то вроде Avatar Your image is invalid
вместо значения по умолчанию?