2010-02-17 13 views
8

Paperclip intenta procesar por defecto cada archivo de imagen para generar una miniatura. Pero también intenta hacerlo con archivos pdf, lo que puede ser una tarea que consume mucho tiempo. Intenté buscar en Google y encontré una solución, pero cambia los métodos de Paperclip.¿Cómo deshabilitar el postprocesamiento de archivos PDF en Paperclip?

Cómo deshabilitar el postprocesamiento de PDF en Paperclip sin cambiar las fuentes de Paperclip?

Respuesta

16

Desde mi aplicación de producción actual, similar al anterior, pero se ve de forma explícita para las imágenes (en este caso mi cargador acepta casi cualquier tipo de archivo, por lo que procese sólo las imágenes e ignorar todos los demás):

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 
+0

Hola Toby, ¿dónde pones este código? Gracias. – sscirrus

+0

En el modelo, iirc –

2

Una solución es utilizar before_post_process de devolución de llamada:

# 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 se debe cambiar a campo correspondiente en el modelo.

Otra solución que se me ocurrió es crear un procesador personalizado para las imágenes en el que debemos verificar el tipo de archivo y si no es un pdf ejecutar el procesador estándar Paperclip::Thumbnail.

0

se puede resolver con una sola línea:

before_post_process { avatar_content_type.match? %r{\Aimage\/.*\z} } 

no se olvide de reemplazar avatar con su atributo (por ejemplo .: receipt_content_type).

Cuestiones relacionadas