【发布时间】:2015-07-29 07:41:28
【问题描述】:
在我的 Ruby on Rails 开发环境中,我通过 Foreman 以典型的方式启动 Rails 和 Unicorn:
(过程文件:)
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
我也在运行 Pow。但不是作为网络服务器。我只是使用 Pow 将来自 mydomain.dev(端口 80)的 http 请求定向到 Unicorn 正在侦听的端口。
您可以通过创建一个包含 Unicorn 正在运行的端口号的 pow 文件 (mydomain.dev) 来做到这一点。
鉴于此设置,是否可以在我的 rails 代码中知道我启动 Unicorn 的端口是什么?
我只想在我的开发环境中知道这一点,这不是生产问题。
在我的 Rails 代码中,我尝试了一些不同的方法,但都没有奏效:
-
Unicorn::Configurator::RACKUP[:port]- 没有返回任何内容 -
Rails::Server.new.options[:Port]- Rails 4 中不存在 -
Rack::Server.new.options[:Port]- 返回默认机架端口 (9292),而不是为此机架实例配置的端口。有没有办法从 rails 获取当前机架实例?
request.port- 返回 80,这是 Pow 正在侦听的端口。 Pow 正在将 http 流量路由到位于不同端口上的 Unicorn。
这些都没有给我 Unicorn 正在运行的端口。
有什么想法吗?
编辑如果你想知道为什么我想知道这个,那是因为在我的开发环境中,我正在尝试为 Pow 动态创建配置文件,所以我可以将 http 请求路由到 Unicorn在正确的端口上。
【问题讨论】:
标签: ruby-on-rails rack unicorn foreman rack-pow