From: nolan@... Date: 2015-01-24T19:49:23+00:00 Subject: [ruby-core:67794] [ruby-trunk - Bug #10781] [Open] stdout flushing and loops Issue #10781 has been reported by Nolan Eakins. ---------------------------------------- Bug #10781: stdout flushing and loops https://bugs.ruby-lang.org/issues/10781 * Author: Nolan Eakins * Status: Open * Priority: Normal * Assignee: * ruby -v: 1.9.3p547 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- I'm making a little program that has a shell like command prompt. Something like: ~~~ $ cmd Cmd out $ more More out $ ~~~ I tried the following code, but the second prompt does not get flushed to my terminal after entering an initial command: ~~~ begin $stdout.write("$ ") $stdout.flush $stdout.puts($stdin.gets.inspect) end until $stdin.closed? || $stdin.eof? ~~~ My output looks like: ~~~ $ input "input\n" more $ "more\n" ~~~ But if I write my code like the following, my prompt works but I can't wrap my prompter in a method: ~~~ $stdout.print('$ ') $stdout.flush begin $stdout.puts($stdin.gets.inspect) $stdout.print('$ ') $stdout.flush end until $stdin.closed? || $stdin.eof? end ~~~ What exactly is the problem here? I've tried a 1.8 and 1.9.3p547. -- https://bugs.ruby-lang.org/