Rubymine:终止STDIN后无法从STDOUT读取

时间:2019-05-22 04:34:56

标签: intellij-idea eof rubymine

在运行或调试模式下,我首先将输入写入控制台,由STDIN读取。我用CMD-D终止输入(不是CTRL-D,请参见键盘快捷键https://www.jetbrains.com/help/idea/debug-tool-window-console.html)。然后尝试将任何内容打印到STDOUT会引发错误:

Traceback (most recent call last):
    1: from /path/to/my/script.rb:27:in `<main>'
/path/to/my/script:27:in `p': Input/output error @ io_writev - <STDOUT> (Errno::EIO)

Process finished with exit code 1

我知道您现在已经迷上了这个故事如何展开的故事,所以来了。如果您打印到STDERR,它有效

#!/usr/bin/env ruby
ins = STDIN.read
puts ins # boom!
#!/usr/bin/env ruby
ins = "hi"
puts ins # hi
#!/usr/bin/env ruby
ins = STDIN.read
STDERR.puts ins # surprise!  STDERR works.

在macOS 10.14.4上运行RubyMine 2019.1.1 RM-191.6707.59(2019年4月16日) ruby-2.6.3并尝试了2.5.1。

在调试会话的深处,我可以看到ruby-debug-ide模块Debugger接受了选项(以防对任何ruby工具开发人员有任何影响):

#<OpenStruct frame_bind=false, host="0.0.0.0", load_mode=false, port=53540, stop=false, tracing=false, int_handler=false, dispatcher_port=53541, evaluation_timeout=10, trace_to_s=true, debugger_memory_limit=0, inspect_time_limit=100, rm_protocol_extensions=true, catchpoint_deleted_event=false, value_as_nested_element=false, attach_mode=false, cli_debug=false, key_value_mode=true>

1 个答案:

答案 0 :(得分:0)

似乎RubyMine的控制台不支持该功能,请遵循RubyMine跟踪器上的相应请求: https://youtrack.jetbrains.com/issue/RUBY-24245