5

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

ここでもっとうまくできることについて何か提案はありますか?クリーンアップコマンドの呼び出しに失敗していますか?

4

1 に答える 1