время создания эскиза скрепки - PullRequest
1 голос
/ 06 апреля 2011

Почему именно paperclip выполняет преобразование, когда для вложения назначен файл, а не выполняет всю эту тяжелую работу при вызове сохранения.

Кажется, это плохо:

ar_obj.attachment = File.open('...') 
#copy file to /tmp 
#styles.length.times do { identify & convert } 
ar_obj.save 
# copy original & thumbnails in place. 

Я не уверен, что это имеет большой смысл. Зачем пытаться конвертировать неподтвержденная привязанность?

Например: попробуйте прикрепить изображение 10G - для завершения потребуется ВСЕГДА даже если у вас есть проверка размера (скажем, <5 МБ), потому что 10G изображение все еще повторно обрабатывается в каждом стиле, который у вас есть. Это не пока не будет вызвано сохранение, что ошибка будет добавлена. </p>

Должна быть веская причина для этого, пожалуйста, просветите меня.

Ответы [ 2 ]

1 голос
/ 08 апреля 2011

Первоначально это было потому, что недопустимое изображение (например, если вы пытались загрузить mp3, когда вы ожидали jpg) было ошибкой проверки, и ее нужно было обнаружить перед сохранением, чтобы вы могли отобразить правильную ошибку для пользователя.

Даже проверки размера в Rails означают, что соединение будет оставаться открытым до тех пор, пока происходит загрузка.Если вы действительно хотите быстро потерпеть неудачу в этом случае, вы должны предотвратить большие загрузки на уровне Apache / nginx.

0 голосов
/ 06 апреля 2011

Я не знаю точную причину, по которой это делается, но я тоже нашел это странным.Обычно я решаю ее с помощью гема DelayedPaperclip, который откладывает обработку вложений для работника DelayedJob.

https://rubygems.org/gems/delayed_paperclip

...