【问题标题】:Foreman conditional process with .env file in RailsRails 中带有 .env 文件的工头条件处理
【发布时间】:2015-07-15 11:29:03
【问题描述】:

我在我的 Ruby on Rails 应用程序上使用 foreman gem 来启动我的不同进程。 在 .env 文件中,我声明了一些布尔变量来决定是否要运行进程。

我希望能够启用或禁用“maildev”,这是一个用于在本地处理电子邮件的 nodejs 应用程序。如果布尔值为 true,则工作正常,但如果将其更改为 false,则工头在启动时崩溃。

这是工头的踪迹

13:20:17 web.1    | started with pid 6583
13:20:17 mailer.1 | started with pid 6584
13:20:17 mailer.1 | ====== Maildev server not launched ======
13:20:17 mailer.1 | exited with code 0
13:20:17 system   | sending SIGTERM to all processes
13:20:17 web.1    | terminated by SIGTERM

我的 .env 文件

RACK_ENV=development
START_MAILDEV=false

我的 Procfile

# Rails server
web: bin/procfile/web

# Mail server
mailer: bin/procfile/maildev

bin/procfile/maildev

#!/bin/sh
if [[ "$RACK_ENV" == 'development' ]]; then
  if [[ "$START_MAILDEV" == "true" ]]; then
    maildev
    echo "====== Maildev server launched ======"
  else
    echo "====== Maildev server not launched ======"
  fi
fi

有人知道我的代码有什么问题吗?
谢谢!

【问题讨论】:

    标签: ruby-on-rails node.js foreman


    【解决方案1】:

    您的代码很好,但是当您的一个进程退出时,echo 会立即退出,Foreman 会关闭其余所有进程。

    Foreman 批准的仅运行某些进程的方式是使用 the -c flag

    -c,--并发

    指定要运行的每种进程类型的数量。传入的值应采用 process=num,process=num

    格式

    在你的情况下,

    foreman start -c web=1
    

    如果你有很多进程并且你想运行它们除了一个,有一个特殊的all关键字,然后你可以覆盖你不想要的那个。 p>

    foreman start -c all=1,maildev=0
    

    【讨论】:

    • 感谢您的快速回复!即使我宁愿只运行foreman start 并让文件处理条件,我现在也将使用此命令
    猜你喜欢
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    相关资源
    最近更新 更多