Файл конфигурации для приложения MIX в качестве приложения OTP

У меня есть приложение OTP (на самом деле ChicagBoss). Я пытаюсь включить в него приложение Phoenix (как обычное приложение OTP).

Я думаю, что большинство приложений запускаются, но у меня возникла ошибка, связанная с отсутствием файла конфигурации. Как предоставить файл конфигурации для приложения MIX извне? Особенно в случае, когда я пытаюсь запустить его из арматуры. Как указать каталог?


person Saczew    schedule 28.04.2016    source источник
comment
Что говорит ошибка? Какой файл конфигурации, по его словам, отсутствует? Какое приложение из-за этого не запустилось? Без такой информации трудно помочь.   -  person Cody Poll    schedule 28.04.2016
comment
Это было приложение Repo (я думаю, связанное с Ecto). Но я видел эти конфигурационные кортежи в конфигурационном файле. Я не знаю, как сообщить микс-приложению о файле конфигурации.   -  person Saczew    schedule 28.04.2016


Ответы (1)


При использовании проекта 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. Например, приведенный выше адаптер 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. В этом случае вам нужно будет перевести конфиги боссов на Эликсир.

person tkowal    schedule 29.04.2016
comment
Думаю, это именно то, что я искал. Дзенки! - person Saczew; 30.04.2016