我有一个OTP应用程序(实际上是ChicagBoss)。我正在尝试将Phoenix应用程序纳入其中(仅作为休闲OTP应用程序)。
我认为大多数应用程序都会启动,但是由于缺少配置文件而导致错误。如何从外部向MIX应用程序提供配置文件?特别是在我尝试从rebar运行它的情况下。如何提供目录?
答案 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。