Ruby 换架口

Ruby Rack change port

我有一个 Ruby 网络 API 并使用 Rack,config.ru 文件如下所示:

#\ -p 8080 -o 0

run App::API

它运行良好,但如果我想使用 rackup 参数更改 Web 服务器的端口,它将无法运行。 config.ru 中的第一行参数似乎覆盖了命令行参数。我在 Rack 文档中找不到任何解释此行为的内容。

问题是如果我这样执行 Rack 服务器:

bundle exec rackup -p 8000

我希望它绑定到端口 8000 但它仍然绑定到端口 8080。如何在不更改 config.ru 文件的情况下更改端口?

所以我决定为 Rack 提交一个 pull request 来修复这个奇怪的行为。阅读代码我意识到一些非常奇怪的事情,代码应该按我的预期工作:|

它比配置文件更喜欢命令行参数 (config.ru)! 深入研究代码提交表明,此更改尚未合并到任何 stable 版本 (1.6.4) 中。它实际上是 2.0.0.alpha 版本。这显然还没有准备好生产。

这是提交:https://github.com/rack/rack/commit/d924f8074e0b3d6c49881c33f983ef323258a941#diff-b578c27b65b1d4a848181b8c1ca082fdL300

所以答案是:在 1.x 版本中是不可能的,我应该更改 config.ru 或忘记它 :(