Câu trả lời:
open-uri là một phần của thư viện Ruby tiêu chuẩn và nó sẽ xác định lại hành vi của opennó để bạn có thể mở một url, cũng như một tệp cục bộ. Nó trả về một Fileđối tượng, vì vậy bạn có thể gọi các phương thức như readvà 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-urisẽ không truyền trực tuyến một tệp, vì vậy bạn không thể đọc 4k đầu tiên của nó. open-urisẽ đọc toàn bộ tệp vào bộ nhớ tại thời điểm mở.
URI.parse('http://www.stackoverflow.com').open { |f| f.read }Nếu bạn đang tìm cách để đảm bảo nó không gọi Kernal.open. Cũng nhận được xung quanh các quy tắc bảo mật rubocop.