proyectos ejemplos ruby stream

ruby - ejemplos - django



Abra una secuencia de IO desde un archivo local o url (2)

Sé que hay librerías en otros idiomas que pueden tomar una cadena que contiene una ruta a un archivo local o una url y abrirla como una secuencia IO legible.

¿Hay alguna manera fácil de hacer esto en ruby?


Para url, es posible que desee rest-client , de su documento

Si desea transmitir los datos de la respuesta a un archivo como viene, en lugar de estar completamente en la memoria, también puede pasar RestClient :: Request.exe a un parámetro: block_response a la que pasa un bloque / proc. Este bloque recibe el objeto raw sin procesar Net :: HTTPResponse de Net :: HTTP, que puede usar para transmitir directamente a un archivo a medida que se recibe cada fragmento.

File.open(''/some/output/file'', ''w'') {|f| block = proc { |response| response.read_body do |chunk| f.write chunk end } RestClient::Request.execute(method: :get, url: ''http://example.com/some/really/big/file.img'', block_response: block) }


open-uri es parte de la biblioteca estándar de Ruby, y redefinirá el comportamiento de open para que pueda abrir una url, así como un archivo local. Devuelve un objeto File , por lo que debería poder invocar métodos como read y readlines .

require ''open-uri'' file_contents = open(''local-file.txt'') { |f| f.read } web_contents = open(''http://www..com'') {|f| f.read }