как я могу остановить зависание моего сервера, когда powershell находится в режиме «выбор»? - PullRequest
3 голосов
/ 15 ноября 2011

Я не верил в это, пока не протестировал несколько раз, но это действительно происходит.

  1. Запустите сервер и приложение rails из powershell: 'rails s'
  2. открыть веб-страницу с этого сервера
  3. обратите внимание, сколько времени понадобилось странице, чтобы получить ее
  4. теперь в powershell, выделите какой-нибудь текст
  5. перезагрузить страницу с шага 2
  6. обратите внимание, что загрузка веб-страницы длится вечно
  7. настроить окна, чтобы вы могли одновременно видеть окно powershell и веб-страницу
  8. вернитесь в powershell и нажмите «Enter» (чтобы скопировать выделенный текст)
  9. обратите внимание, что веб-страница загружается, как только окно powershell выходит из режима выбора

TLDR : сервер Rails, запущенный через powershell, не будет обслуживать страницы, пока powershell находится в режиме «Выбор».

Есть ли какая-то настройка в powershell, которая помешает ему это сделать? Я вижу, что это полезно при выделении текста в середине запуска, но когда он останавливает мой сервер, это переворачивает противно.

Ответы [ 2 ]

7 голосов
/ 15 ноября 2011

Откройте окно powershell, в котором вы обычно запускаете рельсы. Откройте диалоговое окно свойств этого окна и отмените выбор Режим QuickEdit на вкладке Параметры.

0 голосов
/ 16 ноября 2011

Я прокомментировал, думая, что это была просто общая проблема с консольной системой, и, вероятно, все еще так, как я не могу видеть, как 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, хотя и неумышленно, конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...