169 похожих чатов

Вот кстати, как бы вы делали реюзабельный контекст, работающий с

внешними системами?
типа, есть какой-то довольно абстрактный кусок кода, работающий с базой - у него там внутри сколько-то табличек, на них есть вполне независимый комплект миграций, он предоставляет какой-то там интерфейс.

сейчас в нем явно прописан используемый экземпляр Ecto.Repo. можно repo вынести в параметр каждой функции в контексте, но это определенно не масштабируется - если ему потребуется очередь, станет 2 параметра.
можно вынести в отдельный параметр не просто repo, а целую пачку сервисов окружения, но тем не менее, это параметр, который нужно везде таскать.

в кложе это решается подвешенными замыканиями, или reified протоколами, или еще как-нибудь, короче провязывается на фазе инициализации(см. integrant/component). в beam для этого ничего готового нет, а clojure way сделать малореалистично из-за "модулеориентированности" всего инфраструктурного кода.

8 ответов

18 просмотров

ну также при инициализации в application можно указать {YourLibrary, [YouApp.Repo]}, если я правильно поняла вопрос

если это довольно абстрактный кусок, то вынести его в behaviour, а реализацию можно подставлять в тот же модуль через compile_env + defdeligate. Довольно часто используется.

Alex-Bubnov Автор вопроса
Vladimir Sekisov
если это довольно абстрактный кусок, то вынести ег...

> реализацию можно подставлять в тот же модуль через compile_env + defdeligate. а можно где-то пример увидеть?

Не понял ситуации. Нужно сделать MyApp.Repo параметром?

И что такое "подвешанные замыкания"? Погуглил — не нашёл

Alex-Bubnov Автор вопроса

@LamaLove вот это вчерашнее

Alex Bubnov
@LamaLove вот это вчерашнее

А вот для зависимости, которая использует репо проекта, который её использует, я бы сначала ответил на два вопроса 1) Зачем использовать Repo? Типа Repo это же просто набор функций, исполняющих запросы. Разве не достаточно предоставить только запросы? 2) А почему бы не предоставлять свой Repo, чтобы проект-хост использовал его? Я с таким подходом прямо сейчас работаю и в нём ничего страшного нет ...

Alex-Bubnov Автор вопроса
Lama Lover
А вот для зависимости, которая использует репо про...

1 - вот это зависит. да, можно наружу отдать Multi, но в такой ситуации нет возможности оттранслировать ошибки.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта