Mix.Release
Определяет структуру выпуска и удобство для сборки релизов.
Краткое описание
Типы
Функции
- %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