Моя задача - прочитать файл JSON при запуске Application
и сохранить его в конфигурации.
Существует путаница между конфигурацией приложения и файлами конфигурации , из которых [обычно] загружается эта конфигурация.
ConfigProvider
используется для загрузки конфигурации из файла .json
в config приложения . По умолчанию приложение будет загружать только .exs
конфигов, поэтому на самом деле вам нужно будет указать вашему приложению использовать нового провайдера для загрузки конфигурации из .json
.
Не имеет значения, мы говорим о релизах или нет. Без syntacti c sugar можно загрузить JSON из файла и , изменить конфигурацию приложения на лету с помощью Application.put_all_env/2
или Application.put_env/4
для тонкой настройки.
Релизы во многом отличаются (это выходит за рамки этого вопроса), поэтому в документации предлагается изменить раздел releases
файла project
. Чтобы загрузить его для разработки, вы просто делаете:
defmodule MyApp.Application do
@moduledoc false
use Application
@spec start(Application.app(), Application.restart_type()) ::
Supervisor.on_start()
def start(_type, _args) do
config =
JSONConfigProvider.load(
[existing: :config, app: [:my_app]], "file_path")
Application.put_all_env({:my_app, config}, persistent: true)
...