Ruby Open3.popen3不会在Windows 7上返回STDOUT(capybara-webkit)

时间:2014-01-03 01:29:15

标签: ruby windows-7 capybara capybara-webkit

每当我尝试对capybara-webkit运行测试时,它都无法找到侦听端口,因此它会尝试使用0,这会导致以下错误:

Failure/Error: visit user_path
Errno::EADDRNOTAVAIL:
  The requested address is not valid in its context. - connect(2)

经过大量时间调试capybara-webkit的功能后,我发现问题是以下代码行(capybara-webkit-1.1.1 / lib / capybara / webkit / connection.rb :: open_pipe ):

_, @pipe_stdout, @pipe_stderr, wait_thr = Open3.popen3(SERVER_PATH)

当它调用WebKit服务器时,WebKit服务器启动并应输出与STDOUT类似的内容:

Capybara-webkit server started, listening on port: 53467

当我在控制台中手动启动该过程时,这肯定是我所看到的。但是,每当我尝试阅读@pipe_stdout@pipe_stderr时,我得到的只是nil。即使我等到管道准备就绪(如capybara-webkit连接类中所示),也可以使用:

IO.select([@pipe_stdout], nil, nil, WEBKIT_SERVER_START_TIMEOUT)

我仍然看到同样的问题。在Ruby IO类等方面,我几乎是一个新手。我已经尝试了一些我能想到的测试/调试它并让Open3.popen3正确地将相同的消息返回到STDOUT,我可以在控制台中看到无济于事。

有关其他事情的任何想法或想法可以尝试吗?有什么明显的东西让我失踪吗?我知道大多数Capybara维护者都在Mac上工作,这似乎对他们有用,所以这可能是popen3如何使用Windows的问题?

0 个答案:

没有答案