我是Ruby的新手。我创建了一个文件 test.rb ,它具有以下代码。
puts "Enter your First Name"
fname = gets.chomp
puts "Welcome #{fname}"
而且,当我在终端 ruby test.rb 中运行此命令时,它首先显示空行(等待用户输入)。在那里我输入了我的名字。然后在新行上显示“输入您的名字”,然后在新行上显示“ Welcome Tanmay”
Tanmay
Enter your First Name
Welcome Tanmay
在要求输入之前,它应该显示“输入您的名字”。
我正在使用Windows 10,ruby 2.5.1p57,Rails 5.2.0
请帮助。
谢谢。
答案 0 :(得分:2)
设置$stdout.sync = true
可以强制将您写入stdout的所有内容(此后)立即清除。
默认情况下,如果ruby认为正在写非交互式内容,它将缓冲I / O,因为这样可以提高性能,例如写入文件。
在这种情况下,听起来好像是在猜错……但也听起来您的应用程序不太可能从曾经的缓冲中受益,因此可以安全地覆盖默认值以始终保持同步。