rspec によって実行されるすべてのポルターガイスト テストで、次を使用して新しいセッションを作成すると:
Capybara.session_name="some_session_name"
ファントム js インスタンスがサブプロセスとして開始され、テストが終了するまで終了しないため、ビルド サーバーで OOM が発生します。
Poltergeist の readme で説明されているように、これは driver.quit の呼び出しに失敗したためだと思います。
いくつかのカピバラセッションを手動で実行する場合は、セッションが不要になったときに 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
ここでもっとうまくできることについて何か提案はありますか?クリーンアップコマンドの呼び出しに失敗していますか?