Ruby puts覆盖get.chomp提示符

Ruby puts覆盖get.chomp提示符,ruby,Ruby,我想在ruby应用程序中随时接受命令,但是我遇到了应用程序日志和提示冲突的问题。假设我正在输入exit LOG: something happened in the app > exi 编辑:我一直试图通过向上移动光标,然后创建新行,打印日志,然后向下移动到提示符,使新日志在提示符上方打印,但似乎我无法在现有行之间插入新行。(print“\e[A\n一条日志消息。”似乎只是将光标向下移动一行,而不是创建新行。)那么,您希望日志放在哪里?只要您只使用标准终端输出,提示符和日志就必须放在同一个地方。

我想在ruby应用程序中随时接受命令,但是我遇到了应用程序日志和提示冲突的问题。假设我正在输入exit

LOG: something happened in the app > exi
编辑:我一直试图通过向上移动光标,然后创建新行,打印日志,然后向下移动到提示符,使新日志在提示符上方打印,但似乎我无法在现有行之间插入新行。(
print“\e[A\n一条日志消息。”
似乎只是将光标向下移动一行,而不是创建新行。)

那么,您希望日志放在哪里?只要您只使用标准终端输出,提示符和日志就必须放在同一个地方。如果您试图创建一个功能齐全的交互式终端应用程序,那么这就有点复杂。您可能需要查看或。@AJED32谢谢。例如,我应该创建自己的线程t只处理打印到终端的问题?嗯,这可能行得通;不过,还有很多。如果您使用一个特定的线程来处理输出,并确保该线程不会覆盖您的提示,那么是的,这可以解决问题。@Ajedi32您自己使用过Vedeu吗?我有一个与边界无关的问题几何高度。不,我以前从未构建过功能齐全的终端应用程序。如果我的应用程序需要UI,我可能不会首先尝试将其构建为命令行应用程序。如果你的应用程序不需要从终端运行,那么我建议你改为使用类似的应用程序。否则,请发布新问题或在如果可能出现错误,请在GitHub repo上提交问题。 LOG: something happened in the app > exiLOG: something else happened while you were typing
# This thread prints whatever the user types
thread_a = Thread.new do
  loop do
    print '> '
    puts gets.chomp
  end
end

# This thread prints a message every 3 seconds.
thread_b = Thread.new do
  loop do
    puts "I am a message."
    sleep 3
  end
end

thread_a.join