【问题标题】:How to get an Erlang app to run at starting rebar3如何让 Erlang 应用程序在启动 rebar3 时运行
【发布时间】:2017-07-28 21:47:13
【问题描述】:

我可以通过application:start(lager)application:start(myapp) 从rebar3 shell 手动启动应用程序。我希望这种情况发生而不必键入它,例如通过执行一个告诉 rebar3 运行这些命令的 shell 脚本。这可能吗?

【问题讨论】:

    标签: rebar3


    【解决方案1】:

    假设您想在开发期间运行应用程序,您可以这样做:

    • 您可以像这样在命令行中指定应用程序: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

    【讨论】:

    • 感谢您的好答案 - 这个看似简单的问题很难得到答案。
    【解决方案2】:

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

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

    【讨论】:

    • $ rebar3 shell 在我尝试时不会启动applications 元组中列出的应用程序——尽管rebar3 docs 似乎说这是启动依赖应用程序的方式。 :(
    猜你喜欢
    • 2021-01-22
    • 2021-08-17
    • 2015-03-25
    • 2020-04-05
    • 1970-01-01
    • 2012-12-14
    • 2023-03-07
    • 2021-10-06
    • 1970-01-01
    相关资源
    最近更新 更多