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

时间:2016-04-28 19:18:07

标签: elixir phoenix-framework otp mix

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

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

1 个答案:

答案 0 :(得分: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">>}],而Elixir Foo中的模块名称是Erlang 'Elixir.Foo'中的原子。

第二种选择是使用Elixir伞项目,它同时吸引芝加哥老板和凤凰城。在这种情况下,您需要将boss配置转换为Elixir。