3

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

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

4

1 回答 1

2

在使用 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">>}],而 ElixirFoo中的模块名称是 Erlang 中的原子'Elixir.Foo'

第二种选择是使用 Elixir 伞式项目,它同时吸引了 Chicago Boss 和 Phoenix。在这种情况下,您需要将老板配置转换为 Elixir。

于 2016-04-29T06:50:16.273 回答