Я прокомментировал, думая, что это была просто общая проблема с консольной системой, и, вероятно, все еще так, как я не могу видеть, как PowerShell вовлечен здесь, поскольку это просто родительский процесс, но он, кажется, изолирован от кода, который наблюдает для ввода. Я думаю, что сервер rails может искать ввод во время своего основного цикла, и, возможно, выделение текста в консоли блокирует это. Возьмите этот простой скрипт, который зацикливается - но не отслеживает ввод - в одном потоке, записывая в прослушиватель отладки:
ps> $i = 0
ps> while (1) { sleep -seconds 1; [diagnostics.trace]::writeline("ping: $i"); $i++ }
Теперь запустите бесплатный инструмент dbgView от sysinternals / microsoft, чтобы посмотреть результат. Я использую отдельный инструмент вместо записи в консоль, потому что это больше похоже на ваш сценарий, когда веб-страницы обслуживаются в фоновом режиме для сокета. Вы можете получить DbgView от:
http://technet.microsoft.com/en-us/sysinternals/bb896647
Когда я выделяю текст в консоли, скрипт не останавливается. Я даже вставил проверку в буфер ключей, и он все равно не остановился.
Я думаю, что сервер Rails выполняет какую-то проверку ключа, которая каким-то образом блокируется и мешает его обработке запросов. Это кажется отсталым, но мой сценарий не дает сбой, даже если я проверяю [console]::keyavailable
ps> while (1) {
>> sleep -seconds 1;
>> [diagnostics.trace]::writeline("ping: $i");
>> $i++
>> $dummy = [console]::keyavailable
>> }
Похоже, что это вина Rail, хотя и неумышленно, конечно.