Usando o rest-client para baixar um arquivo em disco sem carregar tudo primeiro na memória
Estou usando o rest-client para baixar uma página grande (com cerca de 1,5 GB de tamanho). O valor recuperado é armazenado na memória e salvo em um arquivo. Como resultado, meu programa falha comfailed to allocate memory (NoMemoryError)
.
Mas não é necessário manter esses dados na memória, eles podem até ser salvos diretamente no disco.
Eu descobri "Você pode: (...) manipular manualmente a resposta (por exemplo, operar nela como um fluxo em vez de ler tudo na memória). Consulte a documentação do RestClient :: Request para obter mais informações." emhttps://github.com/rest-client/rest-client Infelizmente depois de lerhttp://www.rubydoc.info/gems/rest-client/1.7.3/RestClient/Request Não tenho ideia de como isso pode ser realizado.
Também sei que posso usar outra biblioteca (Usando WWW: Mechanize para baixar um arquivo em disco sem carregar tudo primeiro na memória), mas meu programa já está usando rest-client.
Código simplificado:
data = RestClient::Request.execute(:method => :get, :url => url, :timeout => 3600)
file = File.new(filename, 'w')
file.write data
file.close