: build_embedded и: start_permanent в Эликсире

Я просматриваю официальный сайт Elixir и сейчас узнаю о Mix. Я следую их примеру.

В документе упоминается:

Когда вы компилируете исходный код, Elixir компилирует артефакты в каталог _build. Однако во многих случаях, чтобы избежать ненужного копирования, Elixir создает ссылки файловой системы из _build на фактические исходные файлы. Если установлено значение true,: build_embedded отключает это поведение, поскольку оно направлено на обеспечение всего необходимого для запуска вашего приложения внутри _build.

У меня есть несколько вопросов по этому отрывку:

  1. Что такое ссылки файловых систем? Имеется в виду что-то вроде «бин / эликсир»?
  2. Можете ли вы перефразировать «Elixir создаст ссылки файловой системы из _build на реальные исходные файлы»? Я не уверен, что это значит, создавая ссылки на реальные исходные файлы. Означает ли это, что артефакты создаются не в папке _build, а в другом месте?
  3. Почему все артефакты лучше помещать в папку _build, чем в другие места? Неужели это просто потому, что лучше все артефакты в одну папку класть?

    Последний вопрос о :start_permanent:

    • In the document, it says :start_permanent option starts your application in permanent mode, which means the Erlang VM will crash if your application’s supervision tree shuts down.. Is it always better to crash the VM when the supervision tree shuts down? What's the motivation behind this?

person user7418039    schedule 19.06.2017    source источник
comment
en.wikipedia.org/wiki/Symbolic_link   -  person Aleksei Matiushkin    schedule 19.06.2017


Ответы (1)


Этот блог сообщение подробно описывает :build_embedded и :start_permanent параметры.

: build_embedded

:build_embedded включает консолидацию протоколов, что ускоряет вызов некоторых функций (например, Enum функций модуля).

Он также создает полную копию файлов в каталоге priv, например статические ресурсы, которые могут быть в priv/static.

Во время разработки вам не нужно делать полную копию этих файлов при каждой сборке, быстрее просто связать их.

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

: start_permanent

:start_permanent желательно для производственных сборок вашего приложения, чтобы все другие приложения OTP, от которых вы зависите (cowboy, postgrex и т. Д.), Также завершали работу, а процесс операционной системы завершался.

Без этого другие приложения OTP останутся запущенными, но код вашего основного приложения не будет работать, в результате чего система останется в полурабочее состояние.

Завершение процесса операционной системы дает инструментам мониторинга хоста возможность перезапустить всю систему или вызвать предупреждение.

person Mike Buhot    schedule 21.06.2017