@rubylang

Страница 739 из 1684
Alex
01.12.2016
09:48:06
Есть гем интерактора, если ты с ним работал то в новом проекте ты сразу же знаешь как с ним работать. С чем то самописным может быть не все так очевидно

Модели AR тоже не юзаешь?

Антон
01.12.2016
09:48:45
я честно пытаюсь понять зачем юзать интераторы но никто не может быстро и просто объяснить

Alex
01.12.2016
09:48:48
лол причем тут валидации

Google
Alex
01.12.2016
09:49:17
У большого интерактора мне подход нравится, там можно несколько интеракторов в группу собирать

maier
01.12.2016
09:49:23
органайзеры это что?

Alex
01.12.2016
09:49:28
и интерактор сам запустит rollback если кто то в цепочке сломался

maier
01.12.2016
09:51:17
давайте с уважением к друг другу :) вопрос о том,кто что использует и почему, чтобы отделить бизнес-логику, там уже вопрос удобства

Антон
01.12.2016
09:51:42
а если писать все на искуственных классах то будет плохо?

maier
01.12.2016
09:51:43
спасибо за ответы всем, буду изучать

Alex
01.12.2016
09:51:49
Что угодно используй, лишь бы модели и контроллеры толстыми не были

Антон
01.12.2016
09:52:19
спасибо за ответы всем, буду изучать
начни с простого, начни с сервисов

Alex
01.12.2016
09:52:22
context и т.д да?

Что из "давайте уважать друг друга" тебе не понятно?

постоянно срачи разводишь же

Антон
01.12.2016
09:53:23
context и т.д да?
а что это и зачем это? паттерн?

Google
Alex
01.12.2016
09:53:35
да хрен знает, конкретный гем

gitlab.com у всех отвалился?

Антон
01.12.2016
09:54:47
а что за rollback, контроль за консистентностью интеракторам передается?

Alex
01.12.2016
09:55:23
а что за rollback, контроль за консистентностью интеракторам передается?
Да. Допустим ты в органайзер собрал несколько интеракторов. Два из них выполнились, пошел третий. От сфейлился. У двух предыдущих вызывается rollback

Антон
01.12.2016
09:55:24
а если transaction завернуть? не получится ли rollback?

Alex
01.12.2016
09:55:35
rollback не всегда только о transactions

Антон
01.12.2016
09:55:52
а что такое rollback тогда?

Alex
01.12.2016
09:56:01
к тому же у каждого interactor должен быть изолированный transactions, иначе смысла в "разбивании" нет.

maier
01.12.2016
09:56:13
начни с простого, начни с сервисов
с чего лучше начать читать?

Alex
01.12.2016
09:56:21
а что такое rollback тогда?
просто метод у интерактора в котором ты откатываешь те действия которые сделал в сценарии

допустим интерактор ChargeCustomerForPicture, у него роллбэк соответственно будет отменять Charg'инг

Антон
01.12.2016
09:57:48
с чего лучше начать читать?
ну мне в свое время вот это понравилось быстро и доступно https://robots.thoughtbot.com/activemodel-form-objects

Alex
01.12.2016
09:58:58
она не будет отменять потому что интерактор уже отработал

во вторых не все решается транзакциями

Антон
01.12.2016
09:59:31
всмысле? если я решаюший метод заверну в транзакцию и внутри транзакции вызову исключение ничего не отработает

Alex
01.12.2016
10:00:31
Еще раз

У тебя есть органайзер

ChargeUserForPicture

Google
Alex
01.12.2016
10:00:50
Запускается когда юзер купил картинку на твоем стоке

в нем ChargeUser, AddPictureToAccount, SendThankYouEmail

Соответственно у тебя ChargeUser может отработать, а AddPictureToAccount сломаться

но ChargeUser уже отработал.

И нарушаешь инкапсуляцию бизнесс логики

Антон
01.12.2016
10:01:55
ну тогда будет nested transactions и может быть кака

Alex
01.12.2016
10:02:35
Заворачивать весь органайзер в транзакцию это костыль. Не все состояние хранится в базе данных.

Зачастую это так, но не во всех приложениях.

Антон
01.12.2016
10:02:43
была разок кака, почему не помню

Alex
01.12.2016
10:02:54
Тот же файл залитый удалить например.

Admin
ERROR: S client not available

maier
01.12.2016
10:03:01
ну мне в свое время вот это понравилось быстро и доступно https://robots.thoughtbot.com/activemodel-form-objects
сервисы это чистые руби классы, которые инклудят в модели?

Alex
01.12.2016
10:03:09
а где? а как?
В данном геме это решается через rollback

Антон
01.12.2016
10:03:11
Тот же файл залитый удалить например.
и тебе органайзер файл восстановит?

Alex
01.12.2016
10:03:22
Интерактор который этот файл заливал при rollback его удалит

Антон
01.12.2016
10:03:40
Alex
01.12.2016
10:04:12
У тебя контекст может быть провален без эксепшена

Google
Alex
01.12.2016
10:04:25
Денег нет например

Антон
01.12.2016
10:04:36
Денег нет например
это эксепшын

Alex
01.12.2016
10:04:41
Денег нет? нет

maier
01.12.2016
10:04:42
нет, вызываются самостоятельно
чтото там не написано про сервисы по ссылке, которую ты кинул, там про инклуд в модели по сути

Alex
01.12.2016
10:04:57
эксепшен это исключительная ситуация которой не должно происходить

нет денег на балансе это банальность.

Антон
01.12.2016
10:05:16
У тебя контекст может быть провален без эксепшена
значит я что-то не учел? интерактор исключает ситуацию когда я что-то не учел в бизнес модели?

чо правда? :)

Alex
01.12.2016
10:06:32
у тебя контекст может быть провален по совершенно нормальной ситуации

нет денег на счете

это часть бизнес логики

Антон
01.12.2016
10:07:05
нет денег на счете
и что? если ты в интеракторе это не учтешь контект не будет провален

будет -100 рублей на счету

Alex
01.12.2016
10:07:25
а причем тут это? :)

Антон
01.12.2016
10:08:04
а причем тут это? :)
причем тут провал бизнес логики? он может случиться как с интерактором так и без

Alex
01.12.2016
10:08:53
У тебя обычный кейс твоей фичи

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