【问题标题】:How to get the server port in a Rails initializer如何在 Rails 初始化程序中获取服务器端口
【发布时间】:2012-03-23 08:47:46
【问题描述】:

我有多个 Rails 服务器实例,每个实例都需要知道 environment.rb 中自己的监听端口。 request.port 将在控制器中工作,但不能在 environment.rb 的上下文中工作。有办法吗?谢谢!

【问题讨论】:

  • 出于好奇,它为什么需要知道这个?
  • @andrew,感谢您的提问。我想我会被问到这里社区的集体草率:) 简短的回答是我们打算在每个服务器实例内的同一端口上打开一个匹配的 UDP 套接字。询问您是否对 UDP 端口的需求感到好奇 :)
  • 我只是不认为这是一个特别好的主意。 IMO,您的实际 Web 服务器(nginx、apache 等)应该正在处理这个问题,但无论如何我对这种设置没有太多经验。
  • 进一步说明@AndrewMarshall 的观点,每个实例的端口是如何设置的?
  • 我们有 10 个服务器实例,每个实例侦听 8000 到 8009 之间的端口。HaProxy 位于最前面以平衡每个实例的流量。这些用于 TCP 请求。我们希望每个服务器实例都打开一个匹配的 UDP 端口。同样,我们还将使用 haproxy 来平衡 UDP 流量。

标签: ruby-on-rails port initializer


【解决方案1】:

您可以使用以下代码获取正在运行的 rails 端口:

Rails::Server.new.options[:Port]

您可以查看options parser in the Rails documentation 以了解可用的哈希参数。

【讨论】:

  • 我的结果好坏参半。在一个地方我可以使用它。在另一个地方,我得到了uninitialized constant Rails::Server...仍在尝试解决这个问题。
  • 即使这样有效,也只会返回默认选项,而不是当前选项。
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 2020-09-25
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多