当PowerShell处于“选择”模式时,如何阻止服务器冻结?

时间:2011-11-15 17:50:27

标签: ruby-on-rails powershell

直到我测试了几次,我才相信这一点,但它真的发生了。

  1. 从powershell启动rails服务器和应用程序:'rails s'
  2. 从该服务器打开网页
  3. 注意页面服务的时间长度
  4. 现在在powershell中,选择一些文字
  5. 从第2步重新加载网页
  6. 请注意,网页将永远加载
  7. 设置窗口,以便您可以同时查看powershell窗口和网页
  8. 返回powershell并点击“Enter”(以便复制所选文本)
  9. 请注意,只要powershell窗口离开选择模式,网页就会加载
  10. TLDR :当PowerShell处于“选择”模式时,通过powershell启动的Rails服务器将不会提供页面。

    powershell中是否有一些设置会阻止它这样做?我可以看到在蝙蝠运行过程中选择文本时有用,但是当它停止我的服务器时它正在翻转令人讨厌。

2 个答案:

答案 0 :(得分:7)

打开一个通常会启动rails的PowerShell窗口。打开窗口的属性对话框,然后在选项选项卡上取消选择 QuickEdit Mode

答案 1 :(得分:0)

我曾评论认为这只是控制台系统的一个普遍问题,它可能仍然是因为我无法看到powershell如何涉及这里,因为它只是一个父进程,但它似乎与正在观看的代码隔离输入。我认为rails服务器可能在其主循环期间寻找输入,并且可能在控制台中选择文本阻止了这一点。采用这个简单的脚本循环 - 但不注意输入 - 在一个线程上,写入调试监听器:

ps> $i = 0
ps> while (1) { sleep -seconds 1; [diagnostics.trace]::writeline("ping: $i"); $i++ }

现在,运行sysinternals / microsoft的免费DbgView工具来观察输出。我使用的是单独的工具,而不是写入控制台,因为这更像是在后台向套接字提供网页的场景。你可以从:

获得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的错,虽然当然是无意的。