From: nolan@... Date: 2015-01-24T20:35:32+00:00 Subject: [ruby-core:67795] [ruby-trunk - Bug #10781] stdout flushing and loops Issue #10781 has been updated by Nolan Eakins. Removing the `$stdin.eof?` call fixed my problem. IDK why as yet. I finally did find a page with a similar issue after seeing it was #eof? related at http://computer-programming-forum.com/39-ruby/0ce7591347ab1e27.htm ---------------------------------------- Bug #10781: stdout flushing and loops https://bugs.ruby-lang.org/issues/10781#change-51206 * 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/