Когда использовать зависимости от компиляции в Elixir
Когда было бы целесообразно указывать зависимость только в deps
в моем mix.exs
а не как зависимость во время выполнения в applications
?
я думал так applications
являются реальными приложениями, которые должны быть запущены до того, как моё собственное приложение может быть запущено, но я сталкиваюсь с проблемой, когда exrm
не ставил Jazz
библиотека (которая, я думаю, содержит только чистые функции) в выпуске, пока я не включил :jazz
в applications
,
1 ответ
Приложение OTP больше похоже на компонент - набор модулей и функций, которые могут (но не обязаны) запускать некоторые процессы. Если приложение OTP не запускает свое собственное дерево контроля, оно называется приложением библиотеки. В любом случае, если вы используете некоторые из функций libs во время выполнения, вам нужно указать его как dep-runtime dep.
В отличие от этого, зависимость во время компиляции обеспечивает только то, что сторонний код извлекается и доступен локально (на вашем компьютере разработчика / сборки). Это полезно, если сторонний код делает свое волшебство вне времени выполнения. Примером может служить мой собственный ExActor или библиотека для насмешки на чистом Erlang meck. В первом случае ExActor делает свое дело во время компиляции, а во втором случае библиотека макетов нужна только во время тестов.