Я знаю, что есть библиотеки на других языках, которые могут принимать строку, содержащую либо путь к локальному файлу, либо URL-адрес, и открывать ее как читаемый поток ввода-вывода.
Есть ли простой способ сделать это в рубине?
open-uri является частью стандартной библиотеки Ruby, и он переопределит поведение, open
чтобы вы могли открывать URL-адрес, а также локальный файл. Он возвращает File
объект, поэтому вы должны иметь возможность вызывать такие методы, как read
и readlines
.
require 'open-uri'
file_contents = open('local-file.txt') { |f| f.read }
web_contents = open('http://www.stackoverflow.com') {|f| f.read }
content = open("http://example.com").read
open-uri
не выполняется, поэтому вы не можете прочитать первые 4 КБ. прочитает в память весь файл в момент открытия.open-uri
URI.parse('http://www.stackoverflow.com').open { |f| f.read }
Если вы ищете способ застраховаться, не звонитеKernal.open
. Также обходит правила безопасности rubocop.