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 }