@proRuby

Страница 1322 из 1594
Tim
01.08.2018
10:45:42
это railway?

Anton
01.08.2018
10:45:58
это railway?
это обработка результата railway

Tim
01.08.2018
10:52:09
сам railway вот тут
ну, а если в месте, которое вызывает эту операцию (например другая операция), надо знать как именно зафейлились? тогда блок Failure обрастет кучей ифов или большим кейсом

Google
?
01.08.2018
11:08:33
Что делает метод сюрреализировать?

Anton
01.08.2018
11:10:25
?
01.08.2018
11:11:39
Прикольно

Anton
01.08.2018
11:12:10
удобная штука, я из него сделал отличные презентеры

только там мелкий баг есть, который поправить было бы круто

Roman
01.08.2018
11:13:44
ждите 2.6

Anton
01.08.2018
11:13:48
wi11son
01.08.2018
11:14:05
шутка же такая была

Roman
01.08.2018
11:14:18
а шо за шутка?

wi11son
01.08.2018
11:14:21
типа руби 3 будет в 3 раза быстрее,но все еще в 4 раза медленнее jruby

Roman
01.08.2018
11:14:33
аа

Google
Anton
01.08.2018
11:15:00
что за баг?
https://github.com/nesaulov/surrealist/issues/114

Tim
01.08.2018
11:15:29
https://gist.github.com/davydovanton/f21d23b8d56ab76e8de7a0acd2e13265
выглядит хорошо, но по-моему это идентично хэндлингу эксепшенов. я бы наверное вместо метода save_user_from_url создал бы объект, который бы подтягивал сам что надо и хэндлил бы эксепшены, например, сохраняя в свой аррэй @errors. Далее у этого объекта бы проверял были ли ошибки и какие. Ну примерно

стой погодь

Tim
01.08.2018
11:21:11
и так мы ни один эксепшен не упустили к юзеру

сразу прервали выполнение где пошло не так

имеем полное описание того что пошло не так + стактрейс

который можно залогировать напоимер

вот. я не знаю что можно сказать против такого подхода

Anton
01.08.2018
11:26:17
моя идеология - ооп)
так как раз это ближе к ооп, чем кидать эксепшены

Tim
01.08.2018
11:26:45
ну что я предложил - не ооп?

Anton
01.08.2018
11:26:52
который можно залогировать напоимер
так ты можешь сделать тоже самое и тут

ну что я предложил - не ооп?
ты предложил вызывать другой объект и у него ждать результат или крешить систему

и ловить все это дело

Tim
01.08.2018
11:27:45
Anton
01.08.2018
11:28:10
так при этом ты мешаешь логику между

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

Google
Tim
01.08.2018
11:28:39
почему? вот обьект, он фетчит юзера. это у него либо получилось, либо нет

Anton
01.08.2018
11:29:27
почему? вот обьект, он фетчит юзера. это у него либо получилось, либо нет
да, почему бы не оборачивать результат в нормальные абстракции? а не юзать тут ошибки

это из разряда использования try в коде

Tim
01.08.2018
11:29:43
ты можешь if object.success? object.payload else object.error_messages end

в месте где надо зафетчить юзера например

Anton
01.08.2018
11:31:03
не понял к чему пример

Tim
01.08.2018
11:32:07
ну то есть тот кто вызывает

не обязан знать ошибки того класса

Anton
01.08.2018
11:32:26
не, ты не понял

не обязан знать ошибки того класса
как раз обязан в эксепшен флоу

Anton
01.08.2018
11:32:45
потому что ты вызываешь, ты и ловишь

Tim
01.08.2018
11:32:56
в моем варианте нет

ты внутри себя можешь конечно контроллировать их

и это нормально

как раз обязан в эксепшен флоу
глянь выше, они в переменную инстанса засовываются

и дальше можно def ok? @error.nil? end к примеру

def error_message @error.message end

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

Google
Tim
01.08.2018
11:48:34
наверное

я еще пока не пришел к однозначному мнению

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

ojab
01.08.2018
11:59:31
а зачем их кидать, если можно без них?

Tim
01.08.2018
12:00:06
типа resorce = UserResource.new('http://...') resource.fetch if resource.fetched? resource.payload else resource.error_message

а зачем их кидать, если можно без них?
как без них и без статуса в методе контролировать флоу?

типа resorce = UserResource.new('http://...') resource.fetch if resource.fetched? resource.payload else resource.error_message
даже так: raise resource.error_message чтобы и из того места сразу ливнуть

Vera
01.08.2018
12:16:28
#вакансия #backend #ruby #go #офис #москва м.Бауманская, полная занятость Белая з/п до 180.000 руб. на руки (компенсация проезда и материальная помощь для переезда иногородним). Middle/Senior Ruby on Rails/Go developer Описание вакансии: Мы — команда разработки Level.Travel, сложного продукта в сфере путешествий. За последние пять лет мы с нуля создали и продолжаем развивать решение для онлайн-продажи путешествий. Сегодня половина российскиих туроператоров работает на основе наших технических регламентов. Ядро нашей компании — GDS-система для поиска и бронирования пакетных туров. Нашу платформу используют лидеры рынка – Яндекс (сервис «Яндекс.Путешествия» полностью построен на ней), TripAdvisor, Kayak, АК Барс Банк, Евросеть, OneTwoTrip и многие другие. Level.Travel является резидентом Инновационного центра «Сколково». По задачам: Разработка серверных приложений на Ruby on Rails; Разработка API; Покрытие кода тестами; Разработка микросервисов на Go. От нас: белая зп, официальное трудоустройство, больничные, отпуска. Помимо оклада есть бонусная система по результатам проектов. Оплата 50% стоимости посещений профессиональных форумов. Ну и еще у нас много возможностей дешево путешествовать)

Admin
ERROR: S client not available

Anton
01.08.2018
12:23:12
Zamira
01.08.2018
12:27:35
#вакансия #backend #ruby #go #офис #москва м.Бауманская, полная занятость Белая з/п до 180.000 руб. на руки (компенсация проезда и материальная помощь для переезда иногородним). Middle/Senior Ruby on Rails/Go developer Описание вакансии: Мы — команда разработки Level.Travel, сложного продукта в сфере путешествий. За последние пять лет мы с нуля создали и продолжаем развивать решение для онлайн-продажи путешествий. Сегодня половина российскиих туроператоров работает на основе наших технических регламентов. Ядро нашей компании — GDS-система для поиска и бронирования пакетных туров. Нашу платформу используют лидеры рынка – Яндекс (сервис «Яндекс.Путешествия» полностью построен на ней), TripAdvisor, Kayak, АК Барс Банк, Евросеть, OneTwoTrip и многие другие. Level.Travel является резидентом Инновационного центра «Сколково». По задачам: Разработка серверных приложений на Ruby on Rails; Разработка API; Покрытие кода тестами; Разработка микросервисов на Go. От нас: белая зп, официальное трудоустройство, больничные, отпуска. Помимо оклада есть бонусная система по результатам проектов. Оплата 50% стоимости посещений профессиональных форумов. Ну и еще у нас много возможностей дешево путешествовать)
А переезжать-то в какую страну/город?)

А, Москва. Понятно

Vera
01.08.2018
12:28:06
Москва да

Ilya
01.08.2018
12:28:28
default city на то и default city чтоб не спрашивали ))

Zamira
01.08.2018
12:28:46
А default country что тогда?)

?
01.08.2018
12:28:55
Zamira
01.08.2018
12:29:05
Может я вообще из Африки и не знаю где находится город Москва ?

?
01.08.2018
12:29:07
В России смысле

Ilya
01.08.2018
12:29:17
А default country что тогда?)
тут же русскоязычная прорубь, так что угадай )

Google
Zamira
01.08.2018
12:29:32
В Африке тоже на русском говорят)

Иногда

Ну ладно, холодно у вас... Ташкентское солнце морально не готова променять

Nico
01.08.2018
12:41:47
Есть ли подводные камни у этого? Foo.call(params: 'baz') ведь лучше чем Foo.new(params: 'baz').call class Foo def self.call(params:) new(params: params).call end def initialize(params:) @bar = params end def call @bar end end

Alexander
01.08.2018
12:45:16
Anton
01.08.2018
12:45:30
поясню, в первом случае ты делаешь класс методы, по сути тебе даже класс не нужен (пихай в прок все) во втором - ты каждый раз будешь инициализировать класс, тогда смысл в нем? оба случая плохи тем, что туда зависимости не прокинуть, придется в тестах мокать, а это сложно

Nico
01.08.2018
12:46:33
яснопонятно, спасибо (:

Максим
01.08.2018
12:49:35
да, тоже считаю что лучше аля Foo.new.call(params)

Roman
01.08.2018
12:53:55
я делаю как раз через self.call

который просто прокся к initialize

обычно мои сервис объекты не принимают параметров в сам call

то есть нет такого Foo.new(dependencies).call(params)

а есть просто Foo.new(dependencies_and_params).call

Anton
01.08.2018
12:55:48
а есть просто Foo.new(dependencies_and_params).call
ну и ты каждый раз инициализируешь объект один и тот же?

а теперь представь, что ты можешь инициализировать объект со всеми зависимостями 1 раз за время жизни приложения и просто вызывать call с параметрами

Roman
01.08.2018
12:57:11
мне обычно такое не надо

обычно у меня объект создается один раз и один раз же используется

ну если такое и понадобится - то тогда можно сделать исключение

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