4

我的目标是通过 Rack 对 HTTP 和 HTTPS/SSL 进行一些自动化测试,而无需求助于代理服务器设置或类似的东西。我有一个我想测试的 gem,我希望其他人也能够运行测试,所以我希望它尽可能独立。

App 的代码在单独运行时运行良好,所以这里不包含,问题出在 Rack 部分。

我想做这样的事情:

app = Rack::Builder.app do
  map "/" do
    Rack::Handler::WEBrick.run App, Port: 3000
  end

  map "/ssl" do
    Rack::Handler::WEBrick.run App, Port: 3001 # more options for SSL here...
  end
end

run app

我已经尝试了上面代码的几种组合,例如:

http = Rack::Builder.app do
  map "/" do
    run App
  end
end


https = Rack::Builder.app do  
  map "/ssl" do
    run App
  end
end

Rack::Handler::WEBrick.run http, Port: 3000
Rack::Handler::WEBrick.run https, Port: 3001 # more options for SSL here...

设置两个服务器后,我倾向于让一个服务器在列出的第一个端口上运行,然后在中断时它将在列出的下一个端口上运行第二个服务器 - 然后,在下一个中断时,另一个服务器在 9292 上或它关闭下。

我显然在做一些不太正确的事情。

这非常接近,但最终通过两个不同的命令行命令运行两个服务器: 在不同端口上启动瘦服务器

任何帮助深表感谢。

4

1 回答 1

1

Current Thin 不支持这一点——我检查了源代码。

Thin v2 仍然是预发布版本,但配置代码看起来通过在配置文件中声明多个侦听器来支持这一点。

但是 Thin v2 仍然是 alpha 软件。

您还可以切换到像 Unicorn 这样明确支持绑定到多个端口或地址的另一服务器。

于 2013-05-02T22:00:35.820 回答