Size: a a a

2020 January 16

LL

Lama Lover in pro.elixir
Максим Барулин
А можно как-то принудительно заставить elixir перекомпилировать модуль, при изменении конфига?
Сделал формирование функций в модуле макросом в зависимости от конфига, модуль находится в депсах, конфиг в основной апе, можно ли как-то насильственно перекомпилировать модуль в депсах?
Почему ты этим занимаешься? Тебе не кажется, что у тебя проблема XY?
источник

VP

Vladimir Potapev in pro.elixir
ну ок. если всё устраивает, то это хорошо)
источник

LL

Lama Lover in pro.elixir
Максим Барулин
проблема в том, что "вот это вот всё" мне не нужно. Мне нужно тупо смёржить дефолтный конфиг с пользовательским. Всё. Зачем мне для этого редисы и прочие штуки? Помню как-то видел модуль, который делал что-топ одобное, но он тоже был на макросах.
Зачееем? Ну вот зачем?
источник

МБ

Максим Барулин in pro.elixir
Lama Lover
Зачееем? Ну вот зачем?
чтобы конфигурировать свою библиотечку.
источник

LL

Lama Lover in pro.elixir
Максим Барулин
чтобы конфигурировать свою библиотечку.
Зачем конфигурировать свою библиотечку?
источник

LL

Lama Lover in pro.elixir
Если ты её хочешь тестировать - тестируй как зависимость
Если хочешь ставить дефолтные значения - ставь дефолтные значения в коде
источник

PG

Pïg Grëënëst in pro.elixir
А лучше вообще сразу падать без конфига
источник

PG

Pïg Grëënëst in pro.elixir
Ибо нефиг
источник

МБ

Максим Барулин in pro.elixir
мне нужен доступ к параметрам, параметров много, нет смысла городить весь этот вагон в конфиге. макрос даёт удобный доступ из разряда, Config.get_parameter_name() при этом все параметры собраны в одном месте
источник

МБ

Максим Барулин in pro.elixir
при добавлении нового, сам добавляется метод доступа
источник

LL

Lama Lover in pro.elixir
У меня сегодня особенно плохое настроение и самочувствие, поэтому я сейчас объясню тебе почему ты неправ
источник

МБ

Максим Барулин in pro.elixir
жду 👍
источник

VS

Vladimir Sekisov in pro.elixir
Максим Барулин
мне нужен доступ к параметрам, параметров много, нет смысла городить весь этот вагон в конфиге. макрос даёт удобный доступ из разряда, Config.get_parameter_name() при этом все параметры собраны в одном месте
генерировать конфиг в compile time - это полная хрень:
как в релизе то такое чудо будете использовать,
если уж очень хочется, то напрашивается,
использование Module.create в runtime
источник

LL

Lama Lover in pro.elixir
Ты хочешь выставить все дефолтные значения в одном месте
При этом, тебе нельзя создавать конфиг, потому что это либа

Что ты делаешь - создаёшь модуль, который генерит код, основанный на пользовательском конфиге
Самый главный и очевидный минус:
Изменения конфига отразится на программе только при перекомпиляции, а если ты сделаешь компиляцию в рантайме, то при сборке релиза будет включатся компилятор, что плохо
источник

LL

Lama Lover in pro.elixir
Второй минус - ну это просто велосипед. Проблема конфигурирования библиотек была решена тысячью и одним способом
Вот пара примеров, которые ко мне пришли в голову за это время
1) Application.get_env/3 с дефолтный значением
2) Какой-нибудь ConfigServer модуль, который не генерит макросы, а просто читает конфиг и мерджит в себя
3) Второй способ, но не сервер, а конфигурация вписывается в :persistent_term
источник

LL

Lama Lover in pro.elixir
Продолжать?
источник

DT

Dmitry Trager in pro.elixir
Yes, please
источник

LL

Lama Lover in pro.elixir
4) Падать без конфига. Указать примеры конфига в README
источник

SM

Sergei Maximov in pro.elixir
Ну и  использовать макросы для решения задачи, которую можно решить без них — как-то не комильфо
источник

LL

Lama Lover in pro.elixir
Вот эти уже очень странными будут
5) :ets, :dets (а почему нет?)
6) Статические файлы (это уже очень извращённо)
7) Если у тебя в конфигах инты - попробуй :atomics
источник