我有一个 OTP 应用程序(实际上是 ChicagBoss)。我正在尝试将 Phoenix 应用程序整合到其中(就像休闲 OTP 应用程序一样)。
我认为大多数应用程序都启动了,但是由于缺少配置文件而导致错误。如何从外部向 MIX 应用程序提供配置文件?特别是当我尝试从 rebar 运行它时。如何提供目录?
我有一个 OTP 应用程序(实际上是 ChicagBoss)。我正在尝试将 Phoenix 应用程序整合到其中(就像休闲 OTP 应用程序一样)。
我认为大多数应用程序都启动了,但是由于缺少配置文件而导致错误。如何从外部向 MIX 应用程序提供配置文件?特别是当我尝试从 rebar 运行它时。如何提供目录?
在使用 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。