关闭水豚的正确方法(与恶作剧者/幻影者)

Nie*_*ian 0 ruby tcp capybara phantomjs poltergeist

我在linux服务器上通过capybara跑了很多工作.我正在使用poltergeist phantomjs驱动程序.过了一会儿,我收到了很多这样的错误:

Errno::EMFILE Too many open files - socket(2)
Run Code Online (Sandbox Code Playgroud)

我看了看,lsof看起来我有很多这些:

ruby      32316   deployer  320u     IPv4  9893211        0t0      TCP localhost:55062 (LISTEN)
Run Code Online (Sandbox Code Playgroud)

现在我怀疑它可能是因为我没有正确关闭连接?

运行类似以下内容后终止的正确方法是什么:

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {:js_errors => false})
end

Capybara.current_driver = :poltergeist
Capybara.javascript_driver = :poltergeist
Capybara.run_server = false

@session = Capybara::Session.new(:poltergeist)
@session.visit('some_url')
Run Code Online (Sandbox Code Playgroud)

jon*_*ton 5

你可以跑@session.driver.quit.