如何在启动 rebar3 时让 Erlang 应用达到 运行

How to get an Erlang app to run at starting rebar3

我可以通过执行 application:start(lager) 然后 application:start(myapp) 从 rebar3 shell 手动启动应用程序。我希望无需输入即可发生这种情况,例如通过执行 shell 脚本告诉 rebar3 运行 这些命令。这可能吗?

假设你想在开发过程中运行应用程序,你可以这样做:

  • 要么在命令行中指定应用程序,如下所示:rebar3 shell --apps lager myapp

  • 或者您在 rebar.config {shell, [{apps, [lager, myapp]}]}. 中指定,然后简单地 运行 它与 rebar3 shell。例如,我有一个名为 tron 的应用程序,并且在我的 rebar.config 中有以下行:{shell, [{apps, [kernel,stdlib,cowboy,lager,tron]}]}。现在,当我 运行 rebar3 shell 我的 erlang 应用程序与所有依赖项一起启动时。

有关 rebar3 shell 及其使用方法的更多信息,请参阅 this awesome blogpost from the creator, or the official documentation here

但是您可能知道,运行 部署应用程序的正确方法是首先构建一个 release 然后简单地 运行 它作为一个可执行文件(自从我构建一个版本以来已经有一段时间了,但不幸的是,那时候它比听起来更难!尽管看起来 rebar3 可能使它变得更容易:rebar3 releases.

我想补充一点,您还可以在 myapp.app.src 文件中指定要在启动时启动的应用程序。

...
{applications,
   [kernel,
    stdlib,
    anotherapp
   ]},
...