【问题标题】:Why is foreman gem ignoring the PORT environment variable?为什么工头 gem 会忽略 PORT 环境变量?
【发布时间】:2012-04-05 22:42:26
【问题描述】:

我希望工头 gem 使用我的开发环境文件中提供的 PORT 值,而不是使用它自己的值。我的文件设置如下所示:

  1. 启动工头的 bash 脚本:

    工头启动-e development.env

  2. development.env 文件内容:

    端口=3000

  3. Procfile 内容

    web: bundle exec rails server thin -p $PORT -e $RAILS_ENV $1

开发服务器最终在端口 5000 上启动。我知道我可以使用 --p 3000 启动工头来强制它使用该端口。但这违背了 env 文件的目的。

有什么建议吗?

【问题讨论】:

    标签: ruby-on-rails ruby heroku gem foreman


    【解决方案1】:

    查看代码:https://github.com/ddollar/foreman/blob/master/lib/foreman/process.rb 看起来 foreman 只会将 PORT 作为命令行参数。

    【讨论】:

    • 我正在提交一个 github 问题,看看他们是否可以提供通过 env 文件控制它的能力。感谢您的回答!
    【解决方案2】:

    我知道这是一篇旧帖子,但我花了一段时间才弄明白,所以不妨在这里添加一个注释。

    Foreman 根据您在 Procfile 中定义服务的位置增加 PORT。

    假设我们的 PORT 环境变量设置为 3000。

    在我们的第一个 Procfile 示例中,Puma 将在 PORT 3000 上运行:

    web: bundle exec puma -q -p $PORT
    worker: bundle exec rake jobs:work
    

    但在我们的第二个 Procfile 中,它将在 PORT 3100 上运行,因为 PORT 变量用于第二行。

    worker: bundle exec rake jobs:work
    web: bundle exec puma -q -p $PORT
    

    不知道为什么,我猜是为了防止不同的进程尝试使用同一个 PORT。

    【讨论】:

    • 棘手!非常感谢您发布您的解决方案。
    • 将 PORT 重命名为其他名称,例如。 SERVER_PORT,它似乎停止了这种魔法
    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多