#ruby-on-rails #facebook #ruby-on-rails-3 #paperclip
#ruby-on-rails #Facebook #ruby-on-rails-3 #скрепка
Вопрос:
мое приложение интегрируется с FB. Когда у пользователя нет изображения, FB возвращает:
https://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v1/yp/r/yDnr5YfbJCH.gif
Хотя это выглядит как обычный gif, это приводит к поломке скрепки:
[paperclip] identify -format %wx%h '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-0.gif[0]' 2>/dev/null
[paperclip] convert '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-0.gif[0]' -resize "x50" -crop "50x50 14 0" repage '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-020110517-560-1r9c5af-0' 2>/dev/null
[paperclip] An error was received while processing: #<Paperclip::PaperclipError: There was an error processing the thumbnail for stream20110517-560-1y0qj3p-0>
[paperclip] identify -format %wx%h '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-0.gif[0]' 2>/dev/null
[paperclip] convert '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-0.gif[0]' -resize "300x300>" '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-020110517-560-1cjw8np-0' 2>/dev/null
[paperclip] An error was received while processing: #<Paperclip::PaperclipError: There was an error processing the thumbnail for stream20110517-560-1y0qj3p-0>
[paperclip] identify -format %wx%h '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-0.gif[0]' 2>/dev/null
[paperclip] convert '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-0.gif[0]' -resize "100x100>" '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-020110517-560-1n3nk3x-0' 2>/dev/null
[paperclip] An error was received while processing: #<Paperclip::PaperclipError: There was an error processing the thumbnail for stream20110517-560-1y0qj3p-0>
[paperclip] identify -format %wx%h '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-0.gif[0]' 2>/dev/null
[paperclip] convert '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-0.gif[0]' -resize "x25" -crop "25x25 7 0" repage '/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU TI/-Tmp-/stream20110517-560-1y0qj3p-020110517-560-rhm4uk-0' 2>/dev/null
[paperclip] An error was received while processing: #<Paperclip::PaperclipError: There was an error processing the thumbnail for stream20110517-560-1y0qj3p-0>
Даже при возникновении ошибки скрепка по-прежнему сохраняет изображение в модели.
Вопросы:
-
Почему это ломается?
-
Как я могу сообщить paperclip, что в случае ошибки обработки прервите изображение, а не весь процесс, поскольку я также сохраняю имена и т.д., Но, По крайней мере, остановите сохранение изображения в нерабочем файле, который заканчивается 404.
Спасибо
Ответ №1:
Похоже, что это на самом деле поврежденное изображение. Загрузка и запуск identify -format %wx%h yDnr5YfbJCH.gif
выдает ошибку:
identify: corrupt image `yDnr5YfbJCH.gif' @ error/gif.c/PingGIFImage/958.
200x126
Так что вы можете обвинить Facebook в этом.
У Rob on Rails есть хороший пример того, как проверить, что загруженное изображение является действительным. Это должно заставить все работать хорошо для ваших конечных пользователей.