@proRuby

Страница 1321 из 1594
Tim
01.08.2018
09:31:32
ну то есть ты говоришь, что валидировать надо только бдшные констрейнты?

Tim
01.08.2018
09:32:27
да

Google
Anton
01.08.2018
09:33:03
Ага. И то, это от случая зависит. Иногда нужно валидировать констрейны в другом месте

Tim
01.08.2018
09:33:34
в каких случаях?

Anton
01.08.2018
09:35:42
С ходу не назову. Это зависит от реализации бизнес логики твоей

Tim
01.08.2018
09:36:16
ладно, спасибо что объяснил про валидацию в контроллерах

про контрол флоу экспешены против рэилвэй я еще не убежден. позже почитаю че ты скинул

но я короче просто против контроля прям на месте. поинт про единую точку выхода - да, есть такое

и я не знаю пока что на это ответить

Alex
01.08.2018
09:39:29
распространенный случай использования разных схем валидации - данные полученные после заполнения формы на нашем сайте - и данные от парнерского аккаунта через OAuth - модель одна, стратегии валидации разные - вызваем нужную схему на месте

Anton
01.08.2018
09:42:24
и я не знаю пока что на это ответить
А вряд ли что-то ответишь. Я сам любил такую фигню, а потом понял, что это медленный готу подход в руби и есть вещи лучше (хоть и с большим количеством абстракций)

Ilya
01.08.2018
09:42:59
https://t.me/pepegramming/24
спс за канал) не видел такого) но я юзаю dry-transaction и мне норм пока)

Anton
01.08.2018
09:43:24
спс за канал) не видел такого) но я юзаю dry-transaction и мне норм пока)
Посмотри на ду нотации, без шуток, они могут убрать много боли

И рефакторинга будет по минимуму

Ilya
01.08.2018
09:45:12
Посмотри на ду нотации, без шуток, они могут убрать много боли
обязательно) а так транзакции обернутые в контейнер это оч приятно

Google
Ilya
01.08.2018
09:45:35
там конечно с пробрасыванием аргументов болезненно, но это разовое явление

Ilya
01.08.2018
09:46:23
with_step_args метод мне не нравится)

Anton
01.08.2018
09:47:20
with_step_args метод мне не нравится)
Я даже не знал, что они такое добавили, лол

Ilya
01.08.2018
09:50:30
Я даже не знал, что они такое добавили, лол
и там небольшая путаница получается на выходе. у меня есть модуль где описана транзакция, касаемая валидации, есть ряд классов, которые реализуют конкретные контейнеры. то есть обернул часть транзакции в условный ValidateContainer, создал obj_validator где шаги контейнера реализованы, а в контроллере вызываю obj_validator и прокидываю в него параметры для шагов из того модуля

либо я это сделал криво

и можно было как-то погуманнее написать

Ilya
01.08.2018
09:54:37
по хорошему у тебя должен быть 1 контейнер на приложение
туда засунуть все шаги, а в условном obj_validator вытягивать нужные?

Anton
01.08.2018
09:54:44
ну типо у тебя транзакция должна быть в контейнере, а не контейнер в транзакции

вот тут примеров посмотреть можешь http://github.com/davydovanton/cookie_box

Ilya
01.08.2018
09:55:21
типо того, да
я это недавно понял просто)

Anton
01.08.2018
09:55:30
в любом оперейшене из этой папки https://github.com/davydovanton/cookie_box/tree/master/lib

Ilya
01.08.2018
09:56:51
а где у тебя контейнер?

Anton
01.08.2018
10:01:06
https://github.com/davydovanton/cookie_box/blob/master/system/container.rb

Ilya
01.08.2018
10:02:02
спасибо

Google
Anton
01.08.2018
10:09:19
неа, это обычный кондишен

который явно прогоняется в определенном месте

Tim
01.08.2018
10:11:03
но дальше он ветвится и выход из функции происходит в разных местах?

Anton
01.08.2018
10:11:26
не, в одном месте, которое явно укажешь

собственно кондишены - это очевидный выход из функции, ловля ошибок - не очевидный

Максим
01.08.2018
10:15:25
Блин ребят чет не могу уловить нить разговора если не сложно можете сделать бриф небольшой а то читаю и понимаю что что то очень интересное

Tim
01.08.2018
10:16:47
а проброс ошибки норм делается?

типа в а вызывается б, в б вызывается в. в в ошибка

Максим
01.08.2018
10:17:27
Да просто вразброс сообщения как то

Не могу понять где начало

Anton
01.08.2018
10:18:03
типа в а вызывается б, в б вызывается в. в в ошибка
ну и в “а” ты ловишь ошибку из “в”, не чувствуешь наебки?

а что если ты еще в “б” поймаешь ее и забудешь?

а что если у тебя цепочка будет из 5 вызовов?

Tim
01.08.2018
10:18:35
вообще я бы в б сделал бы другой эксепшен и в него бы засунул тот что из б

Anton
01.08.2018
10:18:44
(я видел 6 вызовов, при этом они зацикливались, т.е. уходило в рекурсивно)

Tim
01.08.2018
10:18:50
из в то есть

Anton
01.08.2018
10:18:57
вообще я бы в б сделал бы другой эксепшен и в него бы засунул тот что из б
так это помнить надо + эксепшен флоу так то опасная штука

провафлишь - приложение упадет и это болезнено для юзера

Google
Tim
01.08.2018
10:19:50
ну вот, а не через ты так же будешь следить за статусами которые тебе снизу присылаются, не?

Максим
01.08.2018
10:19:59
ну, значит не время ?
Блин Антон иногда кажется что ты меня каким то непробиваемо тупым считаешь

Tim
01.08.2018
10:20:05
*не через эксепшены

Anton
01.08.2018
10:20:22
я это написал к тому, что до всего надо доходить

вот пару лет назад я бы нихуя не понял из этого разговора

Максим
01.08.2018
10:20:51
Хорошо, наверное опять мои комплексы лезут, сорян

Anton
01.08.2018
10:21:01
а потом смесь опыта + чужих идей повлияли на меня и все ок

Хорошо, наверное опять мои комплексы лезут, сорян
все хорошо, спасибо что сказал! я не хотел обидеть тебя. просто говорю, что всему свое время

Admin
ERROR: S client not available

Anton
01.08.2018
10:21:37
смотри пример

покажу с рабочего проекта



мне пофиг на то, что происходит в оперейшене, главное, что бы вернулся объект с нужным интерфейсом который я обработаю

при этом мне не важно что в объекте, потому что это уже забота презентера обработать ошибки правильно

Максим
01.08.2018
10:25:03
А

Ну вроде понял

Google
Максим
01.08.2018
10:25:42
Типа если есть например разные провайдеры то надо делать гейтевей через которые вызываешь нужный в зависимости от контекста и в нем уже ловишь ошибки

Так?

Anton
01.08.2018
10:26:25
не понял

Максим
01.08.2018
10:26:26
В гейтевей собсно ловишь

Ну типа вот есть разные классы например авторизации на разных ресурсах или вызова какого либо апи И ты вместо того чтоб напрямую их звать откуда делаешь класс куда передаешь контекст и этот класс уже сам зовёт что надо и он же ловит ошибки которые ему могут передать классы провайдеры

Anton
01.08.2018
10:28:27
все равно сложно описал

Максим
01.08.2018
10:28:27
Ну как в том примере из рефакторинг форм гуд ту Грейт от чувака с thotbot

Anton
01.08.2018
10:28:41
можно пример реальный? Оо

Максим
01.08.2018
10:28:46
Блин наверное без примеров не смогу

Да ща не смогу дать я не дома

Anton
01.08.2018
10:29:00
да просто напиши пустые классы

Максим
01.08.2018
10:29:08
Но я ещё почитаю посмотрю

Anton
01.08.2018
10:29:30
будет круто!

Максим
01.08.2018
10:31:49
class Gateway def auth(context) Тут зовём класс например с логикой авторизации на каком либо ресурсе в зависимости от контекста и тут же ловим false который считаем ошибкой и соответственно получается что отовсюду можем явно звать этот класс и тестировать именно его вызов end end

Бля все равно текстом вышло

Anton
01.08.2018
10:32:20
да не, это уже понятнее

Максим
01.08.2018
10:32:51
Ну так вот вы примерно об этом же?

Артем
01.08.2018
10:33:05
а можно в двух словах почему выбрали surrealist over, к примеру fast_jsonapi?

Anton
01.08.2018
10:34:29
Ну так вот вы примерно об этом же?
не совсем, скорее тут вопрос про то, как контролировать флоу выполнения бизнес логики

вот про такое https://github.com/davydovanton/cookie_box/blob/master/lib/decks/operations/create.rb#L16-L19

можно ошибки кидать и ловить их где-то

а можно писать if else, что бы проверять что там и как

Страница 1321 из 1594