Скрепка попыткой по умолчанию обработать каждый файл изображения для генерации миниатюры. Но это также пытается сделать это с файлами PDF, которые могут быть действительно трудоемкой задачей. Я попытался считать Google и нашел одно решение, но это изменяет методы Скрепки.
Как отключить постобработку PDF в Скрепке, не изменяя источники Скрепки?
Из моего текущего производственного приложения аналогично приведенному выше, но явно ищет изображения (в этом случае мой загрузчик почти принимает файлы любого типа, поэтому я обрабатываю только изображения и игнорировать все остальные):
before_post_process :is_image?
def is_image?
["image/jpeg", "image/pjpeg", "image/png", "image/x-png", "image/gif"].include?(self.asset_content_type)
end
Одно из решений - использовать обратный вызов before_post_process
:
# Model with has_attached_file
before_post_process :forbid_pdf # should be placed after line with has_attached_file
private
def forbid_pdf
return false if (data_content_type =~ /application\/.*pdf/)
end
data_content_type
следует заменить на соответствующее поле в вашей модели.
Еще одно решение, которое я придумал, - создать собственный процессор для изображений, в котором мы должны проверять тип файла, и если это не pdf, запустить стандартный процессор Paperclip :: Thumbnail
.