Это специфично для Ecto, но вы можете указать конфигурацию времени компиляции при определении модуля как репозитория.
defmodule MyApp.Repo do
use Ecto.Repo, otp_app: :my_app,
adapter: Ecto.Adapters.Postgres
end
Затем вы можете добавить конфигурацию времени выполнения в обратный вызов репо init/2
.
defmodule MyApp.Repo do
use Ecto.Repo, otp_app: :my_app,
adapter: Ecto.Adapters.Postgres
def init(_type, config) do
new_config = Keyword.put(config, :url, System.get_env("DATABASE_URL"))
{:ok, new_config}
end
end
Более общим решением было бы предоставить конфигурацию приложения как часть опции :env
mix.exs
. Я считаю, что это только время выполнения (кто-то, пожалуйста, поправьте меня, если я ошибаюсь).
Вот что mix help compile.app
сообщает по этому поводу.
:env — значения по умолчанию для среды приложения. Среда приложений — один из наиболее распространенных способов настройки приложений. См. модуль Application для механизмов чтения и записи в среду приложения.
Вот пример application/0
в mix.exs
с использованием :env
.
def application do
[extra_applications: [:logger, :crypto],
env: [key: :value],
registered: [MyServer]]
end
person
anthonator
schedule
05.06.2018