Verwenden Sie rest-client, um eine Datei auf die Festplatte herunterzuladen, ohne sie zuerst im Speicher zu speichern.

Ich verwende den Rest-Client zum Herunterladen einer großen Seite (ca. 1,5 GB groß). Der abgerufene Wert wird im Speicher gespeichert und nicht in einer Datei gespeichert. Als Ergebnis stürzt mein Programm mit @ failed to allocate memory (NoMemoryError).

Aber es ist nicht notwendig, diese Daten im Speicher zu behalten, sie können sogar direkt auf der Festplatte gespeichert werden.

I found "Sie können: (...) die Antwort manuell verarbeiten (z. B. als Stream verarbeiten, anstatt alles in den Speicher zu lesen). Weitere Informationen finden Sie in der Dokumentation zu RestClient :: Request." aufhttps: //github.com/rest-client/rest-clien Leider nach dem lesenhttp: //www.rubydoc.info/gems/rest-client/1.7.3/RestClient/Reques Ich habe keine Ahnung, wie es erreicht werden kann.

Ich bin mir auch bewusst, dass ich möglicherweise eine andere Bibliothek benutze Verwenden von WWW: Mechanisieren Sie das Herunterladen einer Datei auf die Festplatte, ohne zuvor alle Dateien in den Speicher zu laden.) aber mein Programm benutzt bereits den Rest-Client.

Vereinfachter Code:

data = RestClient::Request.execute(:method => :get, :url => url, :timeout => 3600)
file = File.new(filename, 'w')
file.write data
file.close

Code -https: //github.com/mkoniecz/CartoCSSHelper/blob/395deab626209bcdafd675c2d8e08d0e3dd0c7f9/downloader.rb#L12

Antworten auf die Frage(4)

Ihre Antwort auf die Frage