Size: a a a

Clojure — русскоговорящее сообщество

2021 October 22

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
во-первых, специально для этого есть либа Mount, а во-вторых, глобальным стейтом трудно управлять
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
когда штук десять компонентов, которые зависят друг от друга, подобный код становится адом
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
да, я знаю про mount, component, integrant и вот это все.
Просто я тут подумал, что мне нужно штук 5 «компонентов» которые друг от друга НЕ ЗАВИСЯТ НИКАК. И нафиг все эти библиотеки в моем случае.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
ну, у себя в пет-проджекте можно как угодно делать
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
узнаешь, если отстрелишь 😊
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Например, на время тестов тебе может понадобится мокнутый компонент. С твоим подходом сделать это нормально не выйдет
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ты же лучше знаешь, где и как используются foo/bar и когда и как вызывается start
как работает def — тоже представляешь
так что для оценки возможных проблем у тебя все данные есть
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Вот я и не знаю что это за компоненты, которые друг от друга зависят.
Коннекшен пул зависит от jetty что-ли?
Да, если делать компонентами фукнции, и делать dependency injection, то да, зависимости появляются.
Но базовые компоненты друг от друга не зависят как правило.

А то, что они разрулят порядок запуска/остановки - ну ок.
Но component поднимет лапки, если при старте/останове что-то упало. И все.
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
with-redef, binding, если уже нужно запускать в разных тредах
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Коннекшен пул зависит от jetty что-ли?
ну в общем случае да, только jetty от пула
не стоит запускать jetty и начинать обслуживать клиентов, пока не стартовало всё необходимое для обслуживания
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
хорошее замечание.
но они зависят в смыле порядка запуска, а не в смысле зависимости по данным, т.е. jetty не нужен коннекшен пул как объект, чтобы запуститься
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
...если только health check не обслуживается той же Jetty.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
В общем, ответ такой, что в нормальных фирмах в прод так не пишут. У себя в пет-проекте -- пожалуйста. А на работе тебя завернут
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Это все понятно. В том смысле, что есть ритуал - использовать mount, component, integrant. А в чем именно ценность, если я на 10 строчках все это сделаю и все это кристально понятно?
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Пока я вижу только неявно через зависимости обеспечить порядок запуска, чтобы jetty запускался в конце.
Когда будет 10 сервисов, то да, тут в ручную уже плохо. Но что это за 10 компонентов?
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Ценность в том, что есть рычаги для управления системой. Система это больше чем набор компонентов.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ну как бы в твоём примере для читателя не очень понятно, откуда в коде берутся foo и bar, вот это точно контрпродуктивно
в этом смысле более сложный вариант более понятен произвольному кложуристу
если же ты пишешь код, который никто и никогда кроме тебя не увидит, то этим всем всё равно, как ты напишешь 😊
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
У нас один из проектов: описание компонентов -- два экрана, и еще экран на указание зависимостей
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Проговорю. Тут нет негатива. Я не навязываю.
Я делал несколько проектов с component в разное время, очень много думал как.
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
а что это за компоненты?
источник