2016-04-28 117 views
3

我有一个OTP应用程序(实际上是ChicagBoss)。我试图将凤凰应用程序纳入它(只是偶尔的OTP应用程序)。MIX应用程序的配置文件为OTP应用程序

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

+2

错误说的是什么?它说的那个配置文件丢失了?结果哪个应用程序无法启动?没有这种信息很难提供帮助。 –

+0

这是回购申请(与我认为的Ecto有关)。但是我在config文件中看到了这些conifg元组。我不知道如何让混合应用程序知道配置文件。 – Saczew

回答

2

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

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

在Erlang中壳可以检查配置对于给定的应用:

application:get_all_env(app). 

在组合的配置文件,你碰到这样的:

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

,你可以检查配置:

Application.get_all_env(:my_app) 

您只需将配置从Elixir转换到Erlang,并将它们放入boss.config即可。例如从上面的外生适配器将变成:

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

只要记住,foo: "bar"是一个关键词列表中药剂Foo[{foo, <<"bar">>}]和模块名是在二郎山'Elixir.Foo'原子。

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

+2

我认为这正是我所期待的。 Dzięki! – Saczew