Class: Tracksperanto::BufferIO
- Includes:
- Returning
- Defined in:
- lib/tracksperanto/buffer_io.rb
Overview
BufferIO is used for writing big segments of text. It works like a StringIO, but when the size of the underlying string buffer exceeds MAX_IN_MEM_BYTES the string will be flushed to disk and it automagically becomes a Tempfile
Constant Summary collapse
- MAX_IN_MEM_BYTES =
5_000_000
Constants inherited from IOWrapper
Instance Attribute Summary
Attributes inherited from IOWrapper
Instance Method Summary collapse
- #close! ⇒ Object
-
#file_backed? ⇒ Boolean
Tells whether this one is on disk.
-
#initialize ⇒ BufferIO
constructor
A new instance of BufferIO.
- #putc(c) ⇒ Object
- #puts(s) ⇒ Object
-
#to_file ⇒ Object
Sometimes you just need to upgrade to a File forcibly (for example if you want) to have an object with many iterators sitting on it.
- #write(s) ⇒ Object (also: #<<)
Methods included from Returning
Constructor Details
#initialize ⇒ BufferIO
Returns a new instance of BufferIO.
19 20 21 |
# File 'lib/tracksperanto/buffer_io.rb', line 19 def initialize @backing_buffer = StringIO.new end |
Instance Method Details
#close! ⇒ Object
36 37 38 39 |
# File 'lib/tracksperanto/buffer_io.rb', line 36 def close! @backing_buffer.close! if @tempfile_in @backing_buffer = nil end |
#file_backed? ⇒ Boolean
Tells whether this one is on disk
50 51 52 |
# File 'lib/tracksperanto/buffer_io.rb', line 50 def file_backed? @tempfile_in end |
#putc(c) ⇒ Object
32 33 34 |
# File 'lib/tracksperanto/buffer_io.rb', line 32 def putc(c) returning(super) { replace_with_tempfile_if_needed } end |
#puts(s) ⇒ Object
28 29 30 |
# File 'lib/tracksperanto/buffer_io.rb', line 28 def puts(s) returning(super) { replace_with_tempfile_if_needed } end |
#to_file ⇒ Object
Sometimes you just need to upgrade to a File forcibly (for example if you want) to have an object with many iterators sitting on it. We also flush here.
43 44 45 46 47 |
# File 'lib/tracksperanto/buffer_io.rb', line 43 def to_file replace_with_tempfile unless @tempfile_in flush self end |
#write(s) ⇒ Object Also known as: <<
23 24 25 |
# File 'lib/tracksperanto/buffer_io.rb', line 23 def write(s) returning(super) { replace_with_tempfile_if_needed } end |