Spec-Zone.ru › Elixir 1.12

Mix.Release

Определяет структуру выпуска и удобство для сборки релизов.

Краткое описание

Типы

application()
mode()
t()

Функции

%Mix.Release{}

Структура Mix.Release имеет следующие поля только для чтения

copy_app(release, app)

Копирует заданное описание приложения в релиз.

copy_ebin(release, source, target)

Копирует каталог ebin по адресу source в target, соблюдая параметры релиза, такие как :strip_beams.

copy_erts(release)

Копирует ERTS, если релиз настроен на это.

make_boot_script(release, path, modes, prepend_paths \\ [])

Создаёт скрипты загрузки.

make_cookie(release, path)

Копирует файл cookie в указанный путь.

make_start_erl(release, path)

Создаёт файл start_erl.data с версиями ERTS и релиза.

make_sys_config(release, sys_config, config_provider_path)

Создаёт структуру sys.config.

rel_templates_path(release, path)

Находит путь к шаблонам для релиза.

strip_beam(binary, options \\ [])

Удаляет из файла beam информацию, не значимую для релиза.

Типы

application()Source

Спецификации

application() :: atom()

mode()Source

Спецификации

mode() :: :permanent | :transient | :temporary | :load | :none

t()Source

Спецификации

t() :: %Mix.Release{
  applications: %{required(application()) => keyword()},
  boot_scripts: %{required(atom()) => [{application(), mode()}]},
  config_providers: [{module(), term()}],
  erts_source: charlist() | nil,
  erts_version: charlist(),
  name: atom(),
  options: keyword(),
  overlays: [String.t()],
  path: String.t(),
  steps: [(t() -> t()) | :assemble, ...],
  version: String.t(),
  version_path: String.t() | {:from_app, application()}
}

Функции

%Mix.Release{}Source

Структура Mix.Release имеет следующие поля только для чтения:

  • :name - имя релиза в виде атома
  • :version - версия релиза в виде строки или {:from_app, app_name}
  • :path - путь к корню релиза
  • :version_path - путь к версии релиза внутри релиза
  • :applications - карта приложения с их определениями
  • :erts_source - исходный код erts в виде списка символов (или nil)
  • :erts_version - версия erts в виде списка символов

Следующие поля можно изменять, при условии соблюдения их типов:

  • :boot_scripts - карта скриптов загрузки, где имя скрипта — ключ, а значение — список ключевых слов со всеми приложениями, которые к нему относятся, и их режимами
  • :config_providers - список кортежей {config_provider, term}, где первый элемент — модуль, реализующий поведение Config.Provider, а term — значение, переданное ему при вызове Config.Provider.init/1
  • :options - список ключевых слов со всеми другими пользовательскими параметрами релиза
  • :overlays - список дополнительных файлов, добавленных к релизу. Если у вас есть пользовательский шаг, добавляющий дополнительные файлы в релиз, вы можете добавить эти файлы в поле :overlays, чтобы они также учитывались при последующих командах, таких как tar/zip. Каждый элемент в overlays — это относительный путь к корню релиза для каждого файла
  • :steps - список функций, которые получают релиз и возвращают релиз. Он также должен содержать атом :assemble, который представляет собой внутренний этап сборки. Он также может содержать атом :tar, чтобы создать архив tar релиза.

copy_app(release, app)Source

Спецификации

copy_app(t(), application()) :: boolean()

Копирует заданное описание приложения в релиз.

Предполагается, что приложение существует в релизе.

copy_ebin(release, source, target)Source

Спецификации

copy_ebin(t(), Path.t(), Path.t()) :: boolean()

Копирует каталог ebin по адресу source в target, соблюдая параметры релиза, такие как :strip_beams.

copy_erts(release)Source

Спецификации

copy_erts(t()) :: boolean()

Копирует ERTS, если релиз настроен на это.

Возвращает true, если релиз был скопирован, false — в противном случае.

make_boot_script(release, path, modes, prepend_paths \\ [])Source

Спецификации

make_boot_script(t(), Path.t(), [{application(), mode()}], [String.t()]) ::
  :ok | {:error, String.t()}

Создаёт скрипты загрузки.

Принимает путь к файлу загрузки без расширения, например, releases/0.1.0/start, и эта команда запишет start.rel, start.boot, и start.script в указанный путь, вернув {:ok, rel_path} или {:error, message}.

Скрипт загрузки использует переменную среды RELEASE_LIB, которая должна быть соответствующим образом установлена с --boot-var и указывать на каталог lib релиза.

make_cookie(release, path)Source

Спецификации

make_cookie(t(), Path.t()) :: :ok

Копирует файл cookie в указанный путь.

Если был задан параметр cookie, мы сравниваем его с содержимым файла (если таковой есть) и спрашиваем пользователя, хочет ли он его перезаписать.

Если параметр не задан, мы генерируем случайный в первый раз.

make_start_erl(release, path)Source

Спецификации

make_start_erl(t(), Path.t()) :: :ok

Создаёт файл start_erl.data с версиями ERTS и релиза.

make_sys_config(release, sys_config, config_provider_path)Source

Спецификации

make_sys_config(t(), keyword(), Config.Provider.config_path()) ::
  :ok | {:error, String.t()}

Создаёт структуру sys.config.

Если есть поставщики конфигурации, то значение вводится в конфигурацию приложения :elixir в sys_config для чтения во время загрузки и запуска поставщиков.

Использует следующие параметры релиза для настройки своего поведения:

  • :reboot_system_after_config
  • :start_distribution_during_config
  • :prune_runtime_sys_config_after_boot

Если поставщиков конфигурации нет, то sys_config не меняется.

rel_templates_path(release, path)Source

Находит путь к шаблонам для релиза.

strip_beam(binary, options \\ [])Source

Спецификации

strip_beam(binary(), keyword()) :: {:ok, binary()} | {:error, :beam_lib, term()}

Удаляет из файла beam информацию, не значимую для релиза.

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

Точные фрагменты, которые сохраняются, не задокументированы и могут меняться в будущих версиях.

© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/mix/1.12.0/Mix.Release.html

Spec-Zone.ru

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