¿Por qué OpenURI trata los archivos de menos de 10kb como StringIO?

Obtengo imágenes con open-uri desde un sitio web remoto y las conservo en mi servidor local dentro de mi aplicación Ruby on Rails. La mayoría de las imágenes se mostraron sin problemas, pero algunas imágenes simplemente no aparecieron.

Después de una larga sesión de depuración, finalmente lo descubrí (gracias aeste blogpost) que la razón de esto es que laclass Buffer en elopen-uri-libary trata los archivos con un tamaño inferior a 10 kb como objetos IO en lugar de archivos temporales.

Logré solucionar este problema siguiendo la respuesta de Micah Winkelspecht paraesta pregunta de StackOverflow, donde coloco el siguiente código dentro de un archivo en mis inicializadores:

<code>require 'open-uri'
# Don't allow downloaded files to be created as StringIO. Force a tempfile to be created.
OpenURI::Buffer.send :remove_const, 'StringMax' if OpenURI::Buffer.const_defined?('StringMax')
OpenURI::Buffer.const_set 'StringMax', 0
</code>

Esto funciona como se esperaba hasta ahora, pero me pregunto por qué pusieron este código en la biblioteca en primer lugar. ¿Alguien sabe una razón específica,¿Por qué los archivos con un tamaño inferior a 10kb se tratan como StringIO?

Dado que el código anterior prácticamente restablece este comportamiento globalmente para toda mi aplicación, solo quiero asegurarme de que no estoy rompiendo nada más.

Respuestas a la pregunta(1)

Su respuesta a la pregunta