Spec-Zone.ru › Elixir 1.11

Mix.Config

Этот модуль устарел. Используйте Config и Config.Reader вместо него.

Простой 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 \\ []) устарело

Читает файл конфигурации.

END_OF_DOCUMENT_MARKER

Функции

config(root_key, opts)

Данная функция устарела. Используйте модуль Config вместо него.

Настраивает заданный 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)

Данная функция устарела. Используйте модуль Config вместо него.

Настраивает заданный 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 \\ [])

Данная функция устарела. Используйте Config.Reader.read_imports!/2 вместо нее.

Вычисляет заданный конфигурационный файл.

Принимает список imported_paths, которые должны вызывать ошибку при попытке повторного импорта (чтобы избежать рекурсивных импортов).

Возвращает кортеж с конфигурацией и импортированными путями.

import_config(path_or_wildcard)

Данный макрос устарел. Используйте модуль Config вместо него.

Импортирует конфигурацию из заданного файла или файлов.

Если path_or_wildcard является подстановочным символом, то будут импортированы все файлы, соответствующие этому подстановочному символу; если ни один файл не соответствует подстановочному символу, ошибки не генерируются. Если path_or_wildcard не является подстановочным символом, а путем к одному файлу, то этот файл импортируется; в случае, если файл не существует, генерируется ошибка.

Если путь/подстановочный символ — это относительный путь/подстановочный символ, он будет расширен относительно каталога, в котором находится текущий конфигурационный файл.

Примеры

Это часто используется для эмуляции конфигурации в разных средах:

import_config "#{Mix.env()}.exs"

Или для импорта файлов из дочерних проектов в рамках проекта:

import_config "../apps/*/config/config.exs"

merge(config1, config2)

Данная функция устарела. Используйте Config.Reader.merge/2 вместо нее.

Объединяет две конфигурации.

Конфигурации объединяются вместе, значения во втором имеют больший приоритет, чем в первом, в случае конфликтов. В случае, если оба значения заданы в виде ключевых списков, они объединяются глубоко.

Примеры

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)

Данная функция устарела. Используйте Application.put_all_env/2 вместо нее.

Сохраняет заданную конфигурацию, изменяя среду конфигурированных приложений.

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 \\ [])

Данная функция устарела. Используйте Config.Reader.read!/2 вместо нее.

Характеристики

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API