November 2012
Intermediate to advanced
888 pages
54h 46m
Polish
Mamy obiekt wejścia-wyjścia — prawdopodobnie Socket — nieobsługujący metod dostępu swobodnego (seek, pos=, rewind itp.). Chcemy potraktować go jak plik dyskowy, po którego zawartości można się swobodnie przemieszczać.
Najprostszym rozwiązaniem jest wczytanie strumienia (lub jego interesującego fragmentu) do pamięci jako obiektu StringIO. Obiekt taki zachowuje się dokładnie tak jak plik.
require 'socket' require 'stringio' sock = TCPSocket.open("www.example.com", 80) sock.write("GET /\n") file = StringIO.new(sock.read) file.read(10) # => "<HTML>\r\n<H" file.rewind file.read(10) # => "<HTML>\r\n<H" file.pos = 90 file.read(15) # => ...