Я предполагаю, что использование вами глобальной переменной $DEBUG
выявляет ошибку или нежелательное состояние в Net :: Protocol. Если вы установите $DEBUG = false
, оно исчезнет.
В этот момент в коде Net :: Protocol он пытается выполнить чтение без блокировки и, по-видимому, истекает время ожидания.
Ruby использует флаг $ DEBUG как часть механизма -d
. Если вы вставите puts $DEBUG
в скрипт и запустите его, вы увидите, что эта переменная переключается. Поскольку он является глобальным, он будет виден в любом коде, нуждающемся в отладке, поэтому вы или автор кода можете активировать сверхспециальную многословность, чтобы помочь отладке:
greg-mbp-wireless:Desktop greg$ ruby untitled.rb
false
greg-mbp-wireless:Desktop greg$ ruby -d untitled.rb
true