【问题标题】:Exclude application in a mix project from startup从启动中排除混合项目中的应用程序
【发布时间】:2019-04-20 06:37:43
【问题描述】:

我有一个启动应用程序的依赖项,但我只想使用它的模块而不希望它的主管运行。如何从启动中排除它?

我在 mans for app.start、run 或 Mix.Project 模块中没有找到与此相关的任何内容

【问题讨论】:

    标签: elixir elixir-mix


    【解决方案1】:

    指定runtime 通常是大多数 应用程序的正确方法:

    {:some_dep, "~> 1.0.0", runtime: false}
    

    这会导致依赖项的应用程序监督树无法与应用程序的其余部分一起启动。但是,如果您愿意,这仍然允许您在运行时手动启动它。

    当改用app: false 时,根本不会读取依赖项的Application 模块,因此您以后甚至无法手动启动它。

    【讨论】:

    • runtime: false 不适用于伞形依赖项吗?我刚刚尝试过,当我尝试启动该应用程序时收到{:error, {:already_started, :myapp}} 错误
    • 另外,我无法使用 Distillery 版本启动 runtime: false 的应用程序。它说{:error, {'no such file or directory', 'some_app.app'}}
    【解决方案2】:

    刚刚在mix help deps找到它

    • :app - 设置为 false 时,不为此读取应用程序文件 依赖。默认读取app文件
    • :runtime - 依赖项是否是运行时应用程序的一部分。 默认为 true,它会自动将应用程序添加到 自动启动并包含在版本中的应用

    它们都适用于我的情况,但不确定有什么区别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-10
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      相关资源
      最近更新 更多