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.

Yes, see the standard StringIO library.

James Edward Gray II

···

On Aug 12, 2009, at 10:07 PM, Nathan Beyer 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.

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 Wed, Aug 12, 2009 at 10:15 PM, James Gray<james@grayproductions.net> wrote:

On Aug 12, 2009, at 10:07 PM, Nathan Beyer 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 Gray II

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, 11:34 pm, Nathan Beyer <nbe...@gmail.com> wrote:

On Wed, Aug 12, 2009 at 10:15 PM, James Gray<ja...@grayproductions.net> wrote:
> On Aug 12, 2009, at 10:07 PM, Nathan Beyer 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 Gray 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

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

···

On Aug 12, 2009, at 20:34, Nathan Beyer wrote:

On Wed, Aug 12, 2009 at 10:15 PM, James > Gray<james@grayproductions.net> wrote:

On Aug 12, 2009, at 10:07 PM, Nathan Beyer 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 Gray 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.