在Ruby中从Capybara运行时,webkit_server会定期挂起

前端之家收集整理的这篇文章主要介绍了在Ruby中从Capybara运行时,webkit_server会定期挂起前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到一个问题,当访问一个URL时,带有Capybara和capybara-webkit的webkit_server实例运行无头连接到本地Xvfb屏幕时挂起.几分钟之后,它会重复访问不同的URL并执行查找器. (我正在使用capybara在vanilla Ruby中的屏幕抓取应用程序,而不是进行测试.)

我已经确认,当它挂起时,站点仍然可以访问(例如,通过命令行上的curl或wget).我也尝试在超时块中包装调用访问的Ruby代码和后续查找器,以便等待新的URL访问60秒后,任何访问()尝试都会在第一次发生之后失败.解决问题的唯一方法是消除Ruby进程调用Capybara / capybara-webkit和webkit_server进程并重新启动.

当我拖动webkit_server进程时,我会重复地看到这样的输出

clock_gettime(CLOCK_MONOTONIC,{5821,680279627}) = 0
gettimeofday({1330890176,712033},{0,33052112}) = 0
gettimeofday({1330890176,712087},140736435864256}) = 0
gettimeofday({1330890176,712137},33108640}) = 0
clock_gettime(CLOCK_MONOTONIC,680486036}) = 0
clock_gettime(CLOCK_MONOTONIC,680530091}) = 0
read(7,0x1fac1b4,4096)                = -1 EAGAIN (Resource temporarily unavailable)

如果我支持调用它的Ruby进程,它挂在一个read()上:

Process 3331 attached - interrupt to quit
read(5,^C <unfinished ...>
Process 3331 detached

我知道Ruby代码挂在Capybara visit()方法上.

任何想法我可以做什么来排除故障或纠正这个是赞赏.我假设这个问题与某些资源有关,webkit_server需要访问URL,但我不知道接下来要尝试什么.

谢谢!

解决方法

capybara-webkit 1.0随机挂在整个套间,对我来说也是如此.

简单地添加“薄”是不够的.
但是明确使用Thin handler是有效的.添加到env.rb:

Capybara.server do |app,port|
  require 'rack/handler/thin'
  Rack::Handler::Thin.run(app,:Port => port)
end

注意瘦使用警告:https://github.com/thoughtbot/capybara-webkit/issues/399#issuecomment-22328028

猜你在找的Ruby相关文章