【发布时间】:2017-07-28 21:47:13
【问题描述】:
我可以通过application:start(lager) 和application:start(myapp) 从rebar3 shell 手动启动应用程序。我希望这种情况发生而不必键入它,例如通过执行一个告诉 rebar3 运行这些命令的 shell 脚本。这可能吗?
【问题讨论】:
标签: rebar3
我可以通过application:start(lager) 和application:start(myapp) 从rebar3 shell 手动启动应用程序。我希望这种情况发生而不必键入它,例如通过执行一个告诉 rebar3 运行这些命令的 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,或官方文档 here。
但您可能知道,运行应用程序以进行部署的正确方法是首先构建一个release,然后简单地将其作为可执行文件运行(我已经有一段时间没有构建一个发行版了,但是不幸的是,当时它比听起来更难!虽然看起来 rebar3 可能让它变得更容易:rebar3 releases。
【讨论】:
我想补充一点,您还可以在 myapp.app.src 文件中指定启动时启动的应用程序。
...
{applications,
[kernel,
stdlib,
anotherapp
]},
...
【讨论】:
$ rebar3 shell 在我尝试时不会启动applications 元组中列出的应用程序——尽管rebar3 docs 似乎说这是启动依赖应用程序的方式。 :(