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

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

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

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

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

8 ответов

16 просмотров

ну также при инициализации в 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, но в такой ситуации нет возможности оттранслировать ошибки.

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта