У меня есть приложение с эликсиром, сервер приложений, которому будут полезны параметры запуска. Это приложение использует репозиторий ecto, поэтому я могу хранить там конфигурацию сервера приложений, но мне все равно понадобится ключ конфигурации для того, что извлекать из базы данных.
В настоящее время я использую config.exs для серверного приложения (все приложение является зонтичным проектом), но, очевидно, он обрабатывает только одну статическую конфигурацию.
Мой вопрос: могу ли я использовать микс, чтобы указать, какой файл конфигурации я хотел бы использовать? Я знаю, что в библиотеке Mix есть несколько функций, но из того, что я прочитал, все они могут использоваться после запуска приложения. И аналогично, могу ли я использовать смесь для загрузки файлов конфигурации для любого из дочерних приложений?
Спасибо за любую предоставленную помощь.
РЕДАКТИРОВАТЬ: По запросу ... После запуска основного зонтичного проекта (не зная всего, что нужно знать о зонтичных проектах, я предполагаю, что порядок запуска дочерних приложений не будет иметь значения; подробности будут разработаны позже) сервер дочернее приложение, используя свои аргументы запуска, запрашивает репозиторий дочерних приложений (Config.Query, содержат запросы, которые будут запускаться по таблице запросов) для полной конфигурации сервера приложений: прослушивание ipAddress и порта, каталог кода, максимальное количество подключений и т. д. Эта конфигурация поддерживается genServer, который при необходимости может быть запрошен другими процессами.
defmodule Hermes.Server.Info do
use GenServer
def start_link() do
GenServer.start_link(__MODULE__, :ok, [name: :hermes_server_configuration])
end
def init(:ok) do
system = Application.get_env(:hermes_server, :system, "dev")
client = Application.get_env(:hermes_server, :client, "testClient")
appServerName = Application.get_env(:hermes_server, :appServername, "testAppServerOne")
config = Config.Query.get_config(system, client, appServerName)
{:ok, config}
end
end
Итак, если бы я мог сделать что-то похожее на elixir --detached -S mix run --config pathToConfigFile
, даже если бы это означало создание моего собственного сценария bash для перехода в правильный каталог, это был бы лучший вариант, на мой взгляд. Но, прочитав ответ Патрика, это кажется невозможным; не читал, что файлы конфигурации - это то, чем занимаются во время компиляции.