В режиме Run или Debug я сначала записываю ввод в консоль, которая читается 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.
Запуск RubyMine 2019.1.1 RM-191.6707.59 (16 апреля 2019 г.) в macOS 10.14.4
ruby-2.6.3, а также попробовал 2.5.1.
В глубине сеанса отладки я вижу модуль ruby-debug-ide. Отладчик принял параметры (в случае, если они что-нибудь значат для любых разработчиков инструментов 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>