2016-08-11 5 views
0

CarrierWave + rmagick gem을 사용하여 서버에 이미지를 업로드하고 있습니다. 정상 파일을 업로드 할 때 모든 것이 잘됩니다. 그러나 형식이 잘못된 파일을 업로드 할 때 양식 오류로 CarrierWave 오류가 표시되지 않고 rmagick을 실행할 때 나타나는 오류가 표시됩니다.rmagick에서 오류를 잡을 때 CarrierWave 오류 메시지가 변경됨

간단한 예입니다.

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 

그리고 내가 만들 :

class User < ActiveRecord::Base 
    ... 
    mount_uploader :avatar, PictureUploader 
end 

이제, 업 로더가 여기에 정의합니다 (avatar 문자열 field입니다) : 나는 User 모델, 그리고 그런 그 안에 업 로더가 예를 들어 빈 파일 (예 : 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 

(3210)는 내가 대신 rmagick의 ming_magick 사용했지만, 결과는 (약간 다른 오류 메시지와 함께) 동일

내가 대신 기본의 Avatar Your image is invalid 같은 말을이 검증 메시지를 변경하기 위해 뭔가를 할 수 있습니까?

답변

0

흠, 실제로는 꽤 쉬웠다 : 난 그냥 그렇게, 국제화에 문자열을 추가하는 데 필요한 :

errors.messaging.rmagick_processing_error: "Error processing image"