Ruby
Capybara

CapybaraでUnicornを使う

More than 3 years have passed since last update.

Capybaraはデフォルトでwebrickが動くようになっているが、Capybara.server に他のRackサーバーを起動するProcを渡すことで変更することが可能。以下はUnicornでCapybaraする例。

  Capybara.server do |app, port|
    Unicorn::Configurator::RACKUP[:port] = port
    Unicorn::Configurator::RACKUP[:set_listener] = true

    # portやworker数は好みで変えてな
    server = Unicorn::HttpServer.new(app, worker_processes: 2)

    # Unicornを起動した場合、Capybaraが動いているProcessが
    # Unicornのmasterとなり、workerがforkされる
    # spec終了時にUnicornを停止させるようtrapしておく
    at_exit do
      server.stop(false)
    end

    server.start

    # Capybara2.0では、Capybara.serverに渡すblockは
    # ブロッキングすることが期待されているのでThreadを止める
    Thread.stop
  end