@rubylang

Страница 1373 из 1684
Fedor
08.02.2018
20:54:58
Или класс

И то и другое в руби есть из коробки и отлично работает

Aleks
08.02.2018
20:56:11
И то и другое в руби есть из коробки и отлично работает
все - выкидываю конетнеры все - будут одни хэши! )))

Google
Fedor
08.02.2018
20:57:21
Как бы di реализуется, к примеру стратегией, или контекстом для интерактора, драй зачем, я так и не придумал

Aleks
08.02.2018
20:58:16
зачем драй что? там вообще то набор гемов.

Fedor
08.02.2018
20:58:34
Зачем драй что угодно )

Я пробовал монады, контейнеры, транзакции

Aleks
08.02.2018
20:58:48
Правильно - хэши наше все )

Fedor
08.02.2018
20:59:30
Ну транзакции, еще полезны иногда, хотя в рельсе чаще всего можно в ar транзакцию завернуть )

Aleks
08.02.2018
21:00:28
…а зачем?
я наверно немного неправильно понимаю ваш манифест. Выше написал зачем

ojab
08.02.2018
21:02:44
я наверно немного неправильно понимаю ваш манифест. Выше написал зачем
До сих пор непонятно, чем конкретно не устраивает хеш в .new.

Fedor
08.02.2018
21:02:45
Aleks
08.02.2018
21:03:32
До сих пор непонятно, чем конкретно не устраивает хеш в .new.
потому что контейнер есть уже готовый, но нужно сделать хэш, так?

Чего?
ar и dry-transaction

ojab
08.02.2018
21:03:53
народ, подскажите пожалуйста, а как в рельсах можно сохранить одну запись несколько раз?
Дубликат одной и той же записи через .dup.save!, например. Или что имеется в виду?

Google
Anton
08.02.2018
21:04:14
Зачем драй что угодно )
Валидации адекватные как минимум

Не привязанные вообще ни к чему

ojab
08.02.2018
21:04:56
потому что контейнер есть уже готовый, но нужно сделать хэш, так?
Контейнер вообще со всеми шагами, которые могут использоваться в этих транзакциях? А зачем его сделали, если он не используется?

ojab
08.02.2018
21:06:45
используется
…и ты хочешь этот самый контейнер со всеми шагами заинжектить в одну и ту же транзакцию, но по разному резолвить шаги?

Anton
08.02.2018
21:06:56
Валидации адекватные как минимум
Ещё в dry-system идея ахуенная, но реализация так себе

Fedor
08.02.2018
21:07:51
При чем тут дб транзакция?
При том, что она покрывает практически все случаи, когда тебе вообще нужна транзакция

Anton
08.02.2018
21:08:13
Как пример, валидация, сохранение в бд и спавн воркера

3 шага, которые изолированы

Поэтому не стоит путать бизнес транзакцию и дб транзакцию :)

Fedor
08.02.2018
21:10:08
валидация в АР происходит перед сейвом базы, и она не меняет состояние, так что для нее транзакция вообще не нужна

воркер создается после сейва, если он успешен

ojab
08.02.2018
21:11:25
валидации в ar слабо приспособлены для проверки чего-то большего, чем сам валидируемый объект (i. e. ассоциации и прочее)

Fedor
08.02.2018
21:11:55
ну да, если идея писать на dry, то без dry никак не обойтись )))

Google
ojab
08.02.2018
21:12:06
ну и проверки на тему "а может ли юзер менять объект" — тоже валидации, но в AR их точно не засунешь

ojab
08.02.2018
21:13:18
Думаю скоро засунут
ну как бы и сейчас никто не мешает прокидывать current_user'a в модель

ojab
08.02.2018
21:14:58
раньше — это где? В контроллере?

Anton
08.02.2018
21:15:32
раньше — это где? В контроллере?
Выбор не большой, либо модель, либо контроллер

ну как бы и сейчас никто не мешает прокидывать current_user'a в модель
Пару раз такое дерьмо видел, было не весело

ojab
08.02.2018
21:16:31
ну таки да, обычно в этих случаях аозникают сервис-обжекты, dry-transaction вполне себе реализация скелета сервис-обжектов.

Anton
08.02.2018
21:18:22
ну таки да, обычно в этих случаях аозникают сервис-обжекты, dry-transaction вполне себе реализация скелета сервис-обжектов.
Самое интересное, что обычно это все в одной папке с кучей неопределенностей. При этом даже интерфейсы сервисов разные

ojab
08.02.2018
21:20:35
люди делятся на счастливчиков, кто не понимают зачем нужны dry-transaction и иже, и на тех кто уже познал боль

Anton
08.02.2018
21:21:10
ojab
08.02.2018
21:22:19
Кстати, после ду нотации из монад перестаёшь юзать транзакции
Ну, транзакции же сахар над монадами. Мне со step'ами удобнее.

Fedor
08.02.2018
21:22:49
ojab
08.02.2018
21:23:09
dry-transaction — это и есть сервисы

(скелет для сервисов)

(и там необязательно использовать DI, контейнеры и прочее, хотя почитав доки и послушав @davydovanton может сложиться такое впечатление)

Fedor
08.02.2018
21:26:44
ну как бы все что они дают, без контейнеров - это откат из коробки

ojab
08.02.2018
21:27:01
они не дают откат, вообще

Fedor
08.02.2018
21:27:11
в целом неплохо, но и не слишком много, что бы тащить их везде где не попадя

Google
Fedor
08.02.2018
21:27:28
как я понял, если хоть один шаг не проходит, транзакция валится

Fedor
08.02.2018
21:27:57
тогда зачем они вообще нужны?

Anton
08.02.2018
21:28:07
Fedor
08.02.2018
21:28:11
транзакции

Anton
08.02.2018
21:28:22
транзакции
Ты доку читал?

Fedor
08.02.2018
21:28:23
если они не дают базового функционала транзакции )

ага

Anton
08.02.2018
21:28:47
Они предоставляют способ группировать логику и выполнять ее по шагам в rail way стиле

если они не дают базового функционала транзакции )
Не путай бизнес транзакции и бд транзакции

Fedor
08.02.2018
21:29:10
да при чем тут бд вообще

мы сейчас вроде полностью про драй

Anton
08.02.2018
21:29:34
мы сейчас вроде полностью про драй
Про бизнес транзакции и rail way скорее

Fedor
08.02.2018
21:29:48
без контейнеров транзакция в драе - просто класс с методом call который может остановить работу если ожин из шагов не прошел

все то же самое может любой другой класс, у которого написан метод call

Anton
08.02.2018
21:30:04
https://fsharpforfunandprofit.com/rop/

И в зависимости от результата идет дальше или возвращает «плохое» значение

Google
ojab
08.02.2018
21:31:04
все то же самое может любой другой класс, у которого написан метод call
bingo! И немного сахара над этим, который в другом случае нужно писать руками каждый раз.

Fedor
08.02.2018
21:31:08
Без контейнеров - это класс, который выполняет пошагово методы класса
ага, и я не вижу разницы, каким синтаксисом я это сделаю, stepами из транзакции, или просто перечислю методы внутри perform

Anton
08.02.2018
21:31:24
Или ханами интерактор

Или взять монады и свой оперейшен написать на ду нотации

Fedor
08.02.2018
21:31:45
ну вот и вопрос, зачем оно мне надо, если руби все то же самое умеет из коробки

просто функционалом своих классов

Anton
08.02.2018
21:31:54
Или вообще все руками сделать через хеши

Fedor
08.02.2018
21:32:03
я об этом с самого начала разговор и заводил

зачем,

?

Anton
08.02.2018
21:32:26
просто функционалом своих классов
Много всего писать разом. Например с result object возиться придётся. Можно уже готовое взять

зачем,
Ну, это все одна идея функциональных объектов, просто вкусовщина как заруливать внутри

Fedor
08.02.2018
21:34:16
ну вот я пока не видел ни одной реальной причины тащить dry везде, где только можно

пару раз приходилось переписывать проекты, где его притащили до меня, без драя код оказывался чище, понятнее и так же прекрасно работал

никакой killer фичи я пока у драя не вижу, разве что в каких-то уж очень специфических ситуациях

ojab
08.02.2018
21:36:56
А зачем его тащить везде где можно?

И какие есть гемы, которые ты тащишь везде где можно?

Fedor
08.02.2018
21:38:00
Вот его везде тащу, и рубокоп еще )))

ojab
08.02.2018
21:38:31
это сильно вспомогательное, с таким же успехом можно ещё rspec вспомнить.

Страница 1373 из 1684