было понятно - в него пишется пачка кучка кода, выгребающая os env в application env, и всё это работает только в релизе, dev/test сетапы в отдельных compile-time конфигах.
но если я переименовываю releases -> runtime, он начинает выполняться при простом старте репла, и конечно же для меня не работает нихрена.
вопрос можно переформулировать в "под какие воркфлоу вообще дизайнился runtime.exs?"
> For Mix, "config/runtime.exs" is loaded after the code is compiled and before the application starts, this allows "config/runtime.exs" to rely on any available code - they can even start any necessary dependency - as long as you keep in mind that any application that is started during "config/runtime.exs" cannot be configured by "config/runtime.exs" itself. Furthermore, given "config/runtime.exs" works at runtime, changing it won't require the whole application to be recompiled. For Releases, it works precisely the same as "config/releases.exs". If both are available, "config/runtime.exs" is executed first, followed by "config/releases.exs".
В PR написано, что это задел на будущую замену config/config.exs
runtime для локального запуска с переменными окружения
Я смотрю на env RELEASE_MODE - который в релизе стоит, который читаю в runtime.exs и отключаю некоторые проверки при отсутствии, но при этом если env-ы передаются в dev-е локально - они работают. Стало очень удобно, удобнее чем было с releases.exs. Могу спокойно протестировать, что конфигурация работает без создания релиза. Я лично так живу.
ну да, они так и пишут If you want to detect you are inside a release, you can check for release specific environment variables, such as RELEASE_NODE or RELEASE_MODE
О, да, посмотрел, я даже не проверяю RELEASE_MODE, только его наличие.
Я просто завернул всё в if (config_env() != :dev) do
Обсуждают сегодня