Mix.Config
Простой API конфигурации и функции для управления конфигурационными файлами.
Этот модуль устарел, используйте вместо него модули Config и Config.Reader из стандартной библиотеки Elixir.
Настройка конфигурации
Чаще всего этот модуль используется для определения собственной конфигурации:
use Mix.Config
config :root_key,
key1: "value1",
key2: "value2"
import_config "#{Mix.env()}.exs"
use Mix.Config импортирует функции config/2, config/3 и import_config/1, чтобы помочь вам управлять вашей конфигурацией.
Оценка конфигурации
После записи конфигурации в файл функции этого модуля могут использоваться для чтения и слияния этой конфигурации. Функция eval!/2 позволяет оценить заданный конфигурационный файл, а функция merge/2 позволяет выполнить глубокое слияние результатов нескольких конфигураций. Эти функции не должны вызываться пользователями, создающими конфигурации, а скорее авторами библиотек.
Примеры
Наиболее распространенное использование Mix.Config — определение конфигурации приложения, чтобы Application.get_env/3 и другие функции Application могли использоваться для извлечения или дальнейшего изменения конфигурации.
Файлы конфигурации приложения обычно размещаются в каталоге config/ ваших проектов Mix. Например, следующая конфигурация
# config/config.exs config :my_app, :key, "value"
будет автоматически загружена Mix и сохранена в среде приложения :my_app, к которой можно получить доступ в исходном коде следующим образом:
"value" = Application.fetch_env!(:my_app, :key1)
Сводка
Функции
- config(root_key, opts) устарело
Настраивает указанный
root_key.- config(root_key, key, opts) устарело
Настраивает указанный
keyдля указанногоroot_key.- eval!(file, imported_paths \\ []) устарело
Оценивает заданный конфигурационный файл.
- import_config(path_or_wildcard) устарело
Импортирует конфигурацию из заданного файла или файлов.
- merge(config1, config2) устарело
Объединяет две конфигурации.
- persist(config) устарело
Сохраняет заданную конфигурацию, изменив среду настроенных приложений.
- read!(file, imported_paths \\ []) устарело
Читает конфигурационный файл.
Функции
config(root_key, opts)Source
Настраивает заданный root_key.
Список ключевых слов всегда глубоко сливается.
Примеры
Указанные opts сливаются в существующую конфигурацию для данного root_key. Противоречивые ключи перезаписываются теми, что указаны в opts. Например, конфигурация приложения ниже
config :logger, level: :warn, backends: [:console] config :logger, level: :info, truncate: 1024
будет иметь окончательную конфигурацию для :logger:
[level: :info, backends: [:console], truncate: 1024]
config(root_key, key, opts)Source
Настраивает заданный key для данного root_key.
Список ключевых слов всегда глубоко сливается.
Примеры
Указанные opts сливаются в существующие значения для key в данном root_key. Противоречивые ключи перезаписываются теми, что указаны в opts. Например, конфигурация приложения ниже
config :ecto, Repo, log_level: :warn, adapter: Ecto.Adapters.Postgres config :ecto, Repo, log_level: :info, pool_size: 10
будет иметь окончательное значение конфигурации для ключа Repo в приложении :ecto:
[log_level: :info, pool_size: 10, adapter: Ecto.Adapters.Postgres]
eval!(file, imported_paths \\ [])Source
Выполняет указанный конфигурационный файл.
Принимает список imported_paths, которые должны вызывать исключение при попытке импорта повторно (чтобы избежать рекурсивных импортов).
Возвращает кортеж с конфигурацией и импортированными путями.
import_config(path_or_wildcard)Source
Импортирует конфигурацию из данного файла или файлов.
Если path_or_wildcard является маской, то будут импортированы все файлы, соответствующие этой маске; если ни один файл не соответствует маске, ошибки не генерируются. Если path_or_wildcard не является маской, а является путем к одному файлу, то этот файл импортируется; в случае, если файл не существует, генерируется ошибка.
Если путь/маска является относительным, он будет расширен относительно каталога, в котором находится текущий конфигурационный файл.
Примеры
Это часто используется для эмуляции конфигурации в разных средах:
import_config "#{Mix.env()}.exs"
Или для импорта файлов из дочерних проектов в проектах типа umbrella:
import_config "../apps/*/config/config.exs"
merge(config1, config2)Source
Объединяет две конфигурации.
Конфигурации объединяются вместе, значения во второй имеют приоритет над значениями в первой в случае конфликтов. Если оба значения являются списками ключевых слов, они глубоко объединяются.
Примеры
iex> Mix.Config.merge([app: [k: :v1]], [app: [k: :v2]]) [app: [k: :v2]] iex> Mix.Config.merge([app: [k: [v1: 1, v2: 2]]], [app: [k: [v2: :a, v3: :b]]]) [app: [k: [v1: 1, v2: :a, v3: :b]]] iex> Mix.Config.merge([app1: []], [app2: []]) [app1: [], app2: []]
persist(config)Source
Сохраняет заданную конфигурацию, изменяя среду настроенных приложений.
config должен быть списком кортежей {app, app_config} или картой %{app => app_config}, где app — это приложения, которые нужно настроить, а app_config — это конфигурация (в виде пар ключ-значение) для каждого из этих приложений.
Возвращает настроенные приложения.
Примеры
Mix.Config.persist(logger: [level: :error], my_app: [my_config: 1]) #=> [:logger, :my_app]
read!(file, imported_paths \\ [])Source
Спецификации
read!(Path.t(), [Path.t()]) :: keyword()
Читает файл конфигурации.
То же, что и eval!/2, но возвращает только конфигурацию из заданного файла, без возвращаемых импортированных путей.
Существует для удобства. Например, вы можете вызвать её внутри своего mix.exs для чтения некоторых внешних данных, которые вы решили перенести в файл конфигурации:
subsystem: Mix.Config.read!("rel/subsystem.exs")
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/mix/1.12.0/Mix.Config.html