
Tim
01.08.2018
10:45:42
это railway?

Anton
01.08.2018
10:45:58

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

Google

Anton
01.08.2018
10:53:14

?
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
удобная штука, я из него сделал отличные презентеры
только там мелкий баг есть, который поправить было бы круто

wi11son
01.08.2018
11:13:02

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

Ilya
01.08.2018
11:14:34

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. Далее у этого объекта бы проверял были ли ошибки и какие. Ну примерно
стой погодь

Anton
01.08.2018
11:18:03

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


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

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

Felix
01.08.2018
12:42:14

Alexander
01.08.2018
12:44:08

Anton
01.08.2018
12:44:28

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
а теперь представь, что ты можешь инициализировать объект со всеми зависимостями 1 раз за время жизни приложения и просто вызывать call с параметрами

Roman
01.08.2018
12:57:11
мне обычно такое не надо
обычно у меня объект создается один раз и один раз же используется
ну если такое и понадобится - то тогда можно сделать исключение