在运行或调试模式下,我首先将输入写入控制台,由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>
答案 0 :(得分:0)
似乎RubyMine的控制台不支持该功能,请遵循RubyMine跟踪器上的相应请求: https://youtrack.jetbrains.com/issue/RUBY-24245