MIX 应用程序作为 OTP 应用程序的配置文件

Configuration file for MIX app as OTP app

我有一个 OTP 应用程序(实际上是 ChicagBoss)。我正在尝试将 Phoenix 应用程序合并到其中(作为休闲 OTP 应用程序)。

我认为大多数应用程序都启动了,但由于缺少配置文件而导致错误。如何从外部向 MIX 应用程序提供配置文件?特别是当我尝试从 rebar.How 运行 提供目录时?

使用 Erlang 项目时,不应使用混合配置,而应使用 erlang 配置。在您的特定示例中, boss.config 文件。在 boss.config 中,您有一个元组列表:

[{app, Options}, {second_app, Options}].

在 Erlang shell 中,您可以检查给定应用程序的配置:

application:get_all_env(app).

在混合配置文件中你有类似的东西:

config :my_app, MyApp.Repo,
  adapter: Ecto.Adapters.Postgres

您可以通过以下方式检查配置:

Application.get_all_env(:my_app)

您需要做的就是将配置从 Elixir 转换为 Erlang,然后将它们放入 boss.config。例如,上面的 Ecto 适配器将变为:

[...other apps...,
 {my_app, [{'Elixir.MyApp.Repo',
           [
            {adapter, 'Elixir.Ecto.Adapters.Postgres'}
           ]}]},
 ...other apps...
].

请记住 foo: "bar" 是关键字列表 [{foo, <<"bar">>}] Elixir 中的模块名称 Foo 是 Erlang 中的原子 'Elixir.Foo'.

第二个选择是使用 Elixir 伞状项目,它同时拉动了 Chicago Boss 和 Phoenix。在这种情况下,您需要将 boss 配置转换为 Elixir。