Tôi biết có libs bằng các ngôn ngữ khác có thể lấy một chuỗi chứa đường dẫn đến tệp cục bộ hoặc url và mở nó dưới dạng luồng IO có thể đọc được.Mở luồng IO từ tệp cục bộ hoặc url
Có cách nào dễ dàng để thực hiện điều này bằng ruby không?
Tôi biết có libs bằng các ngôn ngữ khác có thể lấy một chuỗi chứa đường dẫn đến tệp cục bộ hoặc url và mở nó dưới dạng luồng IO có thể đọc được.Mở luồng IO từ tệp cục bộ hoặc url
Có cách nào dễ dàng để thực hiện điều này bằng ruby không?
open-uri là một phần của thư viện chuẩn của Ruby và sẽ xác định lại hành vi của open
để bạn có thể mở url, cũng như tệp cục bộ. Nó trả về một đối tượng File
, vì vậy bạn có thể gọi các phương thức như read
và readlines
.
require 'open-uri'
file_contents = open('local-file.txt') { |f| f.read }
web_contents = open('http://www.stackoverflow.com') {|f| f.read }
Đối url, bạn có thể muốn rest-client, từ tài liệu của mình
Nếu bạn muốn dòng dữ liệu từ các phản ứng vào một tập tin vì nó đi kèm, chứ không phải là hoàn toàn trong bộ nhớ, bạn cũng có thể thông qua RestClient :: Request.execute một tham số: block_response mà bạn vượt qua một khối/proc.This khối nhận được nguyên chưa được sửa đổi Net :: HTTPResponse đối tượng từ Net :: HTTP, mà bạn có thể sử dụng để dòng trực tiếp vào một tập tin như từng đoạn Đã nhận.
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)
}
@Đây chỉ là ngày của tôi. Cảm ơn bạn! – AnApprentice
Có cách nào để trả về một đối tượng tệp như bạn đã làm ở đây từ tệp đính kèm ActionMailer không? – AnApprentice
Điều đó 'tuyệt vời - cảm ơn. –