野村です

青木さん、なかださんコメントをありがとうございました。
"" と nil を混同していたようです。きちんと動きました。
ありがとうございました。

text = "default string"

while (true)
  print "#{text} > "
  if (s = gets) != nil && s != "\n"
    text = s.chomp
  end
end

> なかだです。
> 
> 「消えてしまう」というのが「" >"の前に何も出力されなくなる」と
> いう意味なら、コーディングした通りの動作です。getsがnilを返すの
> は標準入力がEOFになったときで、空行とEOFはまったくの別物です。

野村朝清 tnomura / mnet.ne.jp