diff --git a/lang/ruby/lib/avro/ipc.rb b/lang/ruby/lib/avro/ipc.rb
index 67eb10d..72520a5 100644
--- a/lang/ruby/lib/avro/ipc.rb
+++ b/lang/ruby/lib/avro/ipc.rb
@@ -104,7 +104,7 @@
     def request(message_name, request_datum)
       # Writes a request message and reads a response or error message.
       # build handshake and call request
-      buffer_writer = StringIO.new(''.force_encoding('BINARY'))
+      buffer_writer = StringIO.new(String.new('', encoding: 'BINARY'))
       buffer_encoder = Avro::IO::BinaryEncoder.new(buffer_writer)
       write_handshake_request(buffer_encoder)
       write_call_request(message_name, request_datum, buffer_encoder)
@@ -248,7 +248,7 @@
     # a response or error. Compare to 'handle()' in Thrift.
     def respond(call_request, transport=nil)
       buffer_decoder = Avro::IO::BinaryDecoder.new(StringIO.new(call_request))
-      buffer_writer = StringIO.new(''.force_encoding('BINARY'))
+      buffer_writer = StringIO.new(String.new('', encoding: 'BINARY'))
       buffer_encoder = Avro::IO::BinaryEncoder.new(buffer_writer)
       error = nil
       response_metadata = {}
@@ -510,7 +510,7 @@
     def read_framed_message
       message = []
       loop do
-        buffer = ''.force_encoding('BINARY')
+        buffer = String.new('', encoding: 'BINARY')
         buffer_size = read_buffer_size
 
         return message.join if buffer_size == 0
@@ -546,7 +546,7 @@
     end
 
     def transceive(message)
-      writer = FramedWriter.new(StringIO.new(''.force_encoding('BINARY')))
+      writer = FramedWriter.new(StringIO.new(String.new('', encoding: 'BINARY')))
       writer.write_framed_message(message)
       resp = @conn.post('/', writer.to_s, {'Content-Type' => 'avro/binary'})
       FramedReader.new(StringIO.new(resp.body)).read_framed_message
