20
Aug

Cómo evitar la regeneración de thumbnails con attachment_fu

attachment_fu es seguramente el plugin de subida de adjuntos más usado actualmente en el mundillo Rails, aunque seguido bastante de cerca por el nuevo y también recomendable paperclip.

Un comportamiento que no me gusta de attachment_fu es que tras cada actualización del modelo, regenera el conjunto de thumbnails. Está bien que tras la creación de la foto procese la imagen para generar todos sus thumbnails, pero no me parece buena idea que si simplemente quieres actualizar cualquier otro dato del modelo, se vuelva a regenerar el conjunto de thumbnails.

Por ejemplo, si tienes un modelo Foto con todos los campos de attachment_fu pero además un campo título… cada vez que actualices la foto aunque sólo sea para cambiarle el título, se volverá a procesar la imagen para generar los thumbnails, dándole carga innecesaria al servidor.

Afortunadamente esto es código libre y fácil de entender así que mirando el fichero attachment_fu.rb, podemos encontrar esta línea que es la que hace que tras cada .save del modelo se procese el adjunto:

  1. base.after_save :after_process_attachment

basta con cambiarla a esto:

  1. base.after_create :after_process_attachment

para que sólo lo haga tras la creación del adjunto, y no en sucesivas actualizaciones.

Sería interesante mirarlo más en profundidad para que sí lo haga en caso de que le estemos pasando un nuevo fichero de imagen, pero por el momento me vale para mis propósitos… y de todos modos quizá es hora de irse cambiando a paperclip, que por lo que tengo entendido, no tiene este comportamiento… aunque tampoco es del todo cómodo porque he leído que para regenerar los thumbnails en paperclip es necesario lanzar una tarea rake.

free blog themes

Leave a Reply