我希望foreman gem使用我的开发环境文件中提供的PORT值,而不是使用自己的值。我的文件设置如下所示:
启动领班的bash脚本:
领班开始-e development.env
development.env文件内容:
PORT = 3000
Procfile内容
web:bundle exec rails server thin -p $ PORT -e $ RAILS_ENV $ 1
开发服务器最终从端口5000开始。我知道我可以使用--p 3000启动工头强制它使用该端口。但这违背了env文件的目的。
有什么建议吗?
答案 0 :(得分:10)
我知道这是一个很老的帖子,但我花了一段时间才弄明白这样做也可以在这里添加一个注释。
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。
答案 1 :(得分:8)
查看代码:https://github.com/ddollar/foreman/blob/master/lib/foreman/process.rb它看起来工头只会将PORT作为命令行参数。