> StringIO is subclassed from Data, so if you already had it defined without the
> correct ancestor then the redefinition will fail:
>
> class Vehicle; end
> class Car; end
> class Car < Vehicle; end # crash

Interesting.
>> class StringIO < Data; end
=> nil
>> require 'stringio'
=> true

I guess the error message was confusing to me.

"NameError: StringIO is already defined"

meant "NameError: StringIO is already defined or superclass mismatch"

Thanks!
-rp