In-memory implementation of IO class

Is there an implementation of the IO class that operates on in-memory
byte arrays (or other data structure)? I haven’t seen anything in the
core/stdlib.

On Aug 12, 2009, at 10:07 PM, Nathan B. wrote:

Is there an implementation of the IO class that operates on in-memory
byte arrays (or other data structure)? I haven’t seen anything in the
core/stdlib.

Yes, see the standard StringIO library.

James Edward G. II

On Wed, Aug 12, 2009 at 10:15 PM, James G.[email protected]
wrote:

On Aug 12, 2009, at 10:07 PM, Nathan B. wrote:

Is there an implementation of the IO class that operates on in-memory
byte arrays (or other data structure)? I haven’t seen anything in the
core/stdlib.

Yes, see the standard StringIO library.

James Edward G. II

Excuse my ignorance – I’m just getting into Ruby, but isn’t the
StringIO for working with character data? Is there no distinction
between characters and bytes? I was assuming that StringIO and String
would cause some form of character encoding/decoding processing to
kick in.

Thanks

  • Nathan

On Aug 12, 11:34 pm, Nathan B. [email protected] wrote:

Excuse my ignorance – I’m just getting into Ruby, but isn’t the
StringIO for working with character data? Is there no distinction
between characters and bytes? I was assuming that StringIO and String
would cause some form of character encoding/decoding processing to
kick in.

Thanks

  • Nathan

I would think this is what the #bytes, #each_byte, #readbyte, etc
methods are for. But I’ve never actually used StringIO myself, so I
can’t say for sure. (However, the fact that Rack and ActionPack both
use StringIO for processing requests says its safe for raw data)

On Aug 12, 2009, at 20:34, Nathan B. wrote:

Yes, see the standard StringIO library.

James Edward G. II

Excuse my ignorance – I’m just getting into Ruby, but isn’t the
StringIO for working with character data? Is there no distinction
between characters and bytes? I was assuming that StringIO and String
would cause some form of character encoding/decoding processing to
kick in.

In ruby 1.8 no. In ruby 1.9 set the encoding to binary.