【问题标题】:Configuration file for MIX app as OTP appMIX 应用程序作为 OTP 应用程序的配置文件
【发布时间】:2016-08-23 17:56:17
【问题描述】:

我有一个 OTP 应用程序(实际上是 ChicagBoss)。我正在尝试将 Phoenix 应用程序整合到其中(就像休闲 OTP 应用程序一样)。

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

【问题讨论】:

  • 错误说明了什么?它说缺少哪个配置文件?哪个应用程序因此无法启动?没有这类信息很难提供帮助。
  • 这是 Repo 应用程序(我认为与 Ecto 有关)。但是我在配置文件中看到了那些配置元组。我不知道如何让 mix 应用知道配置文件。

标签: elixir phoenix-framework erlang-otp elixir-mix


【解决方案1】:

在使用 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 伞式项目,该项目同时拉动 Chicago Boss 和 Phoenix。在这种情况下,您需要将老板配置转换为 Elixir。

【讨论】:

  • 我认为这正是我想要的。 Dzięki!
猜你喜欢
  • 2018-07-16
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 2017-07-03
  • 2013-04-15
  • 2013-12-11
  • 2013-08-18
  • 2014-10-14
相关资源
最近更新 更多