水豚:生成服务器时如何 运行 编码?

Capybara: how to run code when server is spawned?

我有一个带有 WebPack 的 Sinatra 应用程序,当我在开发中启动我的应用程序时,我生成了一个进程 运行ning Webpack Dev Server 并使用 RackProxy 从我的 Sinatra 应用程序提供资产。

当 Capybara 生成 ruby 服务器时 运行 在我的 JS Capybara 验收测试中,我还必须 运行 Webpack Dev Server。

到目前为止,我已经想到将 WDS 启动放在驱动程序寄存器块中,但我有不同的驱动程序。

Capybara.register_driver :headless_chrome do |app|
  Rack::WebpackProxy.start_server

  Capybara::Selenium::Driver.new(app, browser: :chrome, args: ["headless"])
end

生成 Capybara 服务器时 运行 代码的钩子是什么?

Capybara.server= 获取启动服务器时使用的服务器进程的注册名称,您可以使用 Capybara.register_server 注册自己的名称。因此你应该能够做类似

的事情
Capybara.register_server :my_server do |app, port, host, **options|
  # start whatever you need started here
  do_my_stuff
  Capybara.servers[:puma].call(app, port, host) # assuming you want puma as the actual server
end

Capybara.server = :my_server