Нет задокументированного способа проверить, было ли приложение запущено как задача, e. г. потому что приложение не имеет mix
зависимости от производства.
Как правило, такая тонкая настройка решается с помощью :included_applications
в конфигурации проекта и загрузки их вручную, если необходимо, из Application.start/2
, когда требуется с Application.ensure_started/2
. Для проверки условия можно использовать переменную среды (необязательно через псевдоним задачи):
LOAD_INCLUDED=app1,app2,app3 mix ecto.reset
и где-то в Application.start/2
:
"LOAD_INCLUDED"
|> System.get_env()
|> Enum.split(",")
|> Enum.map(&String.to_atom/1)
|> Application.ensure_started()
Если эти работники являются вашими собственными работниками, это даже проще: просто позвоните Kernel.++/2
со списком условных работников на основе переменной среды.
Sidenote: в работе, приложение запускается как выпуск OTP, без mix
, и поэтому явная проверка для mix phx.server
не имеет смысла.