При каждом тесте на полтергейст, который выполняется rspec, если я создаю новый сеанс, используя:
Capybara.session_name="some_session_name"
экземпляр phantomjs запускается как подпроцесс и никогда не завершается до окончания теста, вызывая OOM на моем сервере сборки.
Я полагаю, что это связано с тем, что не удалось вызвать driver.quit, как описано в ознакомлении с Poltergeist а>:
Если вы запускаете несколько сеансов капибары вручную, убедитесь, что вы вызвали session.driver.quit, когда сеанс вам больше не нужен. Если вы забудете об этом, это приведет к утечке памяти, и ресурсы вашей системы могут быть исчерпаны раньше, чем вы ожидаете.
Однако я вызываю page.driver.quit
в блоке after
своих тестов.
Ниже мой код после блока. $adhoc_sessions
— это глобальная переменная, которую я заполняю каждый раз, когда устанавливаю Capybara.session_name
, при этом значение соответствует значению, установленному в Capybara.session_name
.
config.after(:each) do
if example.metadata[:js]
$adhoc_sessions.each do |session_name|
Capybara.using_session( session_name ) do
page.driver.quit
end
end
$adhoc_sessions.clear
end
Любые предложения о том, что я мог бы сделать лучше здесь? Я не могу вызвать какую-то команду очистки?
page.driver.quit
, на мой взгляд, я поступаю правильно. github.com/jonleighton/poltergeist/issues/419 - person sethcall   schedule 26.11.2013