回形针缩略图生成的时间

时间:2011-04-06 15:22:46

标签: ruby-on-rails ruby paperclip

为什么在将文件分配给附件时,paperclip执行转换,而不是在调用save时执行所有繁重的工作。

这看起来很糟糕:

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

我不确定这根本没什么意义。为什么尝试转换 未经验证的附件?

例如:尝试附加10G图像 - 需要FOREVER才能完成 即使你有大小验证(比如说<5MB),因为10G 图像仍然会重新处理为您拥有的每种样式。事实并非如此 直到调用save才会添加错误。

这一定有充分的理由,请赐教。

2 个答案:

答案 0 :(得分:1)

最初是因为无效的图像(如果您在期待jpg时尝试上传mp3)是验证错误,需要在保存之前发现,以便您可以向用户显示正确的错误。

即使对Rails中的大小进行验证,也意味着只要上传发生,连接就会保持打开状态。如果你真的想在这种情况下快速失败,你应该防止Apache / nginx级别的大量上传。

答案 1 :(得分:0)

我不知道为什么这样做的确切原因,但我发现它也很奇怪。我通常使用DelayedPaperclip gem来解决它,它会延迟处理对DelayedJob工作者的附件。

https://rubygems.org/gems/delayed_paperclip