class

Session::CommitOnWrite

Inherits IO < Reference < Object

Wraps a response's output and runs a block once, just before the first byte is written.

Response headers, Set-Cookie among them, are sent with the first write. A session saved after the endpoint returns is too late for a response that was flushed, streamed, or larger than the output buffer, and its cookie would be lost.

Constructors

new(io : IO, &commit : -> )
Source

Instance methods

close

Closes this IO.

IO defines this is a no-op method, but including types may override.

Source
closed?

Returns true if this IO is closed.

IO defines returns false, but including types may override.

Source
commit
Source
committed?
Source
flush

Flushes buffered data, if any.

IO defines this is a no-op method, but including types may override.

Source
read(slice : Bytes) : NoReturn

Reads at most slice.size bytes from this IO into slice. Returns the number of bytes read, which is 0 if and only if there is no more data to read (so checking for 0 is the way to detect end of file).

io = IO::Memory.new "hello"
slice = Bytes.new(4)
io.read(slice) # => 4
slice          # => Bytes[104, 101, 108, 108]
io.read(slice) # => 1
slice          # => Bytes[111, 101, 108, 108]
io.read(slice) # => 0
Source
write(slice : Bytes) : Nil

Writes the contents of slice into this IO.

io = IO::Memory.new
slice = Bytes.new(4) { |i| ('a'.ord + i).to_u8 }
io.write(slice)
io.to_s # => "abcd"
Source