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)
Настраивает заданный 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)
Настраивает заданный 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 \\ [])
Вычисляет заданный конфигурационный файл.
Принимает список imported_paths, которые должны вызывать ошибку при попытке повторного импорта (чтобы избежать рекурсивных импортов).
Возвращает кортеж с конфигурацией и импортированными путями.
import_config(path_or_wildcard)
Импортирует конфигурацию из заданного файла или файлов.
Если path_or_wildcard является подстановочным символом, то будут импортированы все файлы, соответствующие этому подстановочному символу; если ни один файл не соответствует подстановочному символу, ошибки не генерируются. Если path_or_wildcard не является подстановочным символом, а путем к одному файлу, то этот файл импортируется; в случае, если файл не существует, генерируется ошибка.
Если путь/подстановочный символ — это относительный путь/подстановочный символ, он будет расширен относительно каталога, в котором находится текущий конфигурационный файл.
Примеры
Это часто используется для эмуляции конфигурации в разных средах:
import_config "#{Mix.env()}.exs"
Или для импорта файлов из дочерних проектов в рамках проекта:
import_config "../apps/*/config/config.exs"
merge(config1, config2)
Объединяет две конфигурации.
Конфигурации объединяются вместе, значения во втором имеют больший приоритет, чем в первом, в случае конфликтов. В случае, если оба значения заданы в виде ключевых списков, они объединяются глубоко.
Примеры
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)
Сохраняет заданную конфигурацию, изменяя среду конфигурированных приложений.
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 \\ [])
Характеристики
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.11.2/Mix.Config.html