class Gem::StringSink def initialize @string = "" end attr_reader :string def write(s) @string += s s.size end def set_encoding(enc) @string.force_encoding enc end end class Gem::StringSource def initialize(str) @string = str.dup end def read(count=nil) if count @string.slice!(0,count) else s = @string @string = "" s end end alias_method :readpartial, :read end