Por que o OpenURI trata os arquivos com tamanho inferior a 10kb como StringIO?

Eu busco imagens com o open-uri de um site remoto e as persisto no meu servidor local dentro do meu aplicativo Ruby on Rails. A maioria das imagens foi mostrada sem nenhum problema, mas algumas imagens simplesmente não apareceram.

Depois de uma longa sessão de depuração eu finalmente descobri (graças aeste blogpost) que a razão para isto é que oclass Buffer noopen-uri-libary trata arquivos com menos de 10kb em tamanho como objetos IO em vez de tempfiles.

Eu consegui contornar este problema, seguindo a resposta de Micah Winkelspecht paraesta pergunta do StackOverflow, onde eu coloquei o seguinte código dentro de um arquivo em meus 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>

Isso funciona como esperado até agora, mas eu continuo me perguntando, por que eles colocaram esse código na biblioteca em primeiro lugar? Alguém sabe um motivo específico,Por que arquivos com menos de 10kb são tratados como StringIO?

Como o código acima praticamente redefine esse comportamento globalmente para todo o meu aplicativo, só quero ter certeza de que não estou quebrando nada.

questionAnswers(1)

yourAnswerToTheQuestion