Wiem, że istnieją biblioteki w innych językach, które mogą przyjmować ciąg zawierający ścieżkę do pliku lokalnego lub adres URL i otwierać go jako czytelny strumień IO.
Czy istnieje łatwy sposób na zrobienie tego w Ruby?
open-uri jest częścią standardowej biblioteki Ruby i przedefiniuje zachowanie, open
tak aby można było otworzyć adres URL, a także plik lokalny. Zwraca File
obiekt, więc powinieneś być w stanie wywołać metody takie jak read
i 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
nie będzie przesyłany strumieniowo pliku, więc nie możesz odczytać jego pierwszych 4k. w momencie otwarciaopen-uri
odczyta do pamięci cały plik.URI.parse('http://www.stackoverflow.com').open { |f| f.read }
Jeśli szukasz sposobu na ubezpieczenie to nie dzwonięKernal.open
. Również omija zasady bezpieczeństwa Rubocop.