Вы, вероятно, находитесь в конце потока, где больше не осталось байтов. После записи и перед чтением следует перемотать файл (открыть заново или перейти к позиции 0).
require 'tempfile'
t = Tempfile.new('test-data')
t.open
t.sync = true
t << "apples"
t.puts "bananas"
t.seek 0
puts "contents are [#{t.read}] (#{t.size} bytes)"
t.close