如何在启动 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
]},
...
我可以通过执行 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
]},
...