Elixir / Erlang application
可能有依赖的应用程序。正如文档:
您可以配置生成的 应用程序通过在
mix.exs
中定义应用程序/ 0函数 以下选项:• :applications - all applications your application depends on at runtime. By default, this list is automatically inferred from your dependencies. Any extra Erlang/Elixir dependency must be specified in :extra_applications. Mix and other tools use the application list in order to start your dependencies before starting the application itself. • :extra_applications - a list of Erlang/Elixir applications that you want started before your application. For example, Elixir's :logger or Erlang's :crypto.
这些相关的应用程序将在启动我的应用程序之前全部启动。到目前为止一切都很好。
applications
键需要一个原子列表,它不允许元组。这使得无法将参数传递给Application.start/2
。
有没有可靠的方法将start_args
传递给相关应用,还是我被迫使用手动MyApp.start(:normal, [:hello])
调整默认行为?
如果答案是“是”,我怎样才能使用不同的start_args
列表启动相同的依赖应用程序两次?
答案 0 :(得分:2)
简短的回答是否定的。 Elixir并非所有相同的应用程序都要多次启动。但是,你可能会有一些技巧。
通过将app: false
添加到deps,该应用将不会自动启动。
{:my_dep, "...", app: false}
然后你可以从主应用程序启动它。
MyDep.Application.start(...)
然后,您可以在主管的早期启动应用程序中的其他工作人员。
您需要在应用中注意一些事项。
但所有这些都取决于您尝试使用的依赖关系。