2016-04-28 204 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