如何在Rails初始化器中获取服务器端口

3

我有多个Rails服务器实例,每个实例都需要在environment.rb中知道自己的监听端口。request.port可以在控制器中使用,但不能在environment.rb中使用。有什么方法吗?谢谢!


出于好奇,为什么需要知道这个? - Andrew Marshall
@andrew,感谢你的提问。考虑到这里社区的整体浏览量,我想我会被问到这个问题的 :) 简短的回答是,我们打算在每个服务器实例内开启一个匹配的UDP套接字,并使用相同的端口。如果您对UDP端口的需求感到好奇,请随时提问。 - timeon
我认为那不是一个特别好的主意。在我看来,你的实际网络服务器(nginx、apache等)应该处理这个问题,但我对这种设置并没有太多经验。 - Andrew Marshall
进一步回应@AndrewMarshall的观点,每个实例的端口是如何设置的? - Jordan Running
我们有10个服务器实例,每个实例都在8000到8009之间的端口上监听。HaProxy位于前端,以平衡流量到它们中的每一个。这些是用于TCP请求的。我们希望每个服务器实例打开一个匹配的UDP端口。同样,我们将使用haproxy平衡UDP流量。 - timeon
1个回答

0
您可以使用以下代码获取正在运行的Rails端口:
Rails::Server.new.options[:Port]

您可以查看 Rails 文档中的选项解析器,以了解可用的哈希参数。


我在这方面取得了一些不一致的结果。在一个地方我能够使用它。在另一个地方我遇到了未初始化的常量Rails::Server...仍在努力弄清楚这个问题。 - Andrew
即使这个功能可以运行,它只会返回默认选项,而不是当前选项。 - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接