Когда использовать зависимости от компиляции в Elixir

Когда было бы целесообразно указывать зависимость только в deps в моем mix.exs а не как зависимость во время выполнения в applications?

я думал так applications являются реальными приложениями, которые должны быть запущены до того, как моё собственное приложение может быть запущено, но я сталкиваюсь с проблемой, когда exrm не ставил Jazz библиотека (которая, я думаю, содержит только чистые функции) в выпуске, пока я не включил :jazz в applications,

1 ответ

Решение

Приложение OTP больше похоже на компонент - набор модулей и функций, которые могут (но не обязаны) запускать некоторые процессы. Если приложение OTP не запускает свое собственное дерево контроля, оно называется приложением библиотеки. В любом случае, если вы используете некоторые из функций libs во время выполнения, вам нужно указать его как dep-runtime dep.

В отличие от этого, зависимость во время компиляции обеспечивает только то, что сторонний код извлекается и доступен локально (на вашем компьютере разработчика / сборки). Это полезно, если сторонний код делает свое волшебство вне времени выполнения. Примером может служить мой собственный ExActor или библиотека для насмешки на чистом Erlang meck. В первом случае ExActor делает свое дело во время компиляции, а во втором случае библиотека макетов нужна только во время тестов.

Другие вопросы по тегам