Spec-Zone.ru › Elixir 1.10

Конфигурация

Простой API конфигурации на основе ключевых слов.

Пример

Этот модуль чаще всего используется для определения конфигурации приложения, обычно в config/config.exs:

import Config

config :some_app,
  key1: "value1",
  key2: "value2"

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

import Config будет импортировать функции config/2, config/3 и import_config/1, чтобы помочь вам управлять вашей конфигурацией.

config/2 и config/3 используются для определения конфигурации ключ-значение для данного приложения. После запуска Mix, он автоматически оценит файл конфигурации и сохранит указанную выше конфигурацию в среде приложения :some_app, к которой можно получить доступ следующим образом:

"value1" = Application.fetch_env!(:some_app, :key1)

Наконец, строка import_config "#{Mix.env()}.exs" импортирует другие файлы конфигурации, основанные на текущей среде Mix, такие как config/dev.exs и config/test.exs.

Config также предоставляет низкоуровневый API для оценки и чтения конфигурации в модуле Config.Reader.

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

Миграция из use Mix.Config

Модуль Config в Elixir был введен в версии v1.9 в качестве замены Mix.Config, который был специфичен для Mix и был устаревшим.

Вы можете использовать Config вместо Mix.Config в двух шагах. Первый шаг — заменить use Mix.Config в начале ваших файлов конфигурации на import Config.

Второй — убедиться, что ваши вызовы import_config/1 не содержат символа подстановки. Если это так, вам нужно выполнить поиск подстановки вручную. Например, если вы сделали:

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

Он должен быть заменён на:

for config <- "../apps/*/config/config.exs" |> Path.expand(__DIR__) |> Path.wildcard() do
  import_config config
end

config/releases.exs

Если вы используете релизы, см. mix release, существует ещё один файл конфигурации под названием config/releases.exs. В то время как config/config.exs и др., упомянутые в предыдущем разделе, выполняются всякий раз, когда вы запускаете команду Mix, включая сборку релиза, config/releases.exs выполняется каждый раз при запуске вашей производственной системы. Поскольку Mix недоступен в производственной системе, config/releases.exs не должен использовать ни одну из функций Mix.

Обзор

Функции

config(root_key, opts)

Настраивает данный root_key.

config(root_key, key, opts)

Настраивает данный key для данного root_key.

import_config(file)

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

Функции

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]

import_config(file)

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

В случае, если файла не существует, генерируется ошибка.

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

Примеры

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

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

© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.10.4/Config.html

Spec-Zone.ru

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