
Tim
18.09.2018
14:15:04
(а поножовщина в центральной азии)
ок, интересно

Alex
18.09.2018
14:22:46

Nikita
18.09.2018
14:49:24

Google

Dima
18.09.2018
15:03:57
хахаха)

Tim
18.09.2018
15:05:32
ура, как раньше

Alex
18.09.2018
15:57:02
Помогите объеденить запрос в один большой, ну или по граммотному чтобы по каждой компании находились все dot applications у которых .where(current_stage_event: {event: "prospect"}).joins('LEFT JOIN tasks on tasks.subject_id = dot_applications.id').where(tasks: {id: nil})
Вот 2 отдельно работающие строки запроса. Спасибо.
DotApplication.all.joins(:current_stage_event).where(current_stage_event: {event: "prospect"}).joins('LEFT JOIN tasks on tasks.subject_id = dot_applications.id').where(tasks: {id: nil})
Company.all.joins(:users).where(users: { notification_for_active_prospects: true})

Damir
18.09.2018
21:15:52
А из инстамарта будет кто-нибудь вещать на rubyrussia?
Может тут есть кто-нибудь из instamart?)

Anton
18.09.2018
21:17:02

Alex
18.09.2018
21:17:50

Anton
18.09.2018
21:17:57
Лол

Damir
18.09.2018
21:20:06
не, я просто задаюсь вопросом не отпиздят ли меня ребята оттуда, узнав что гавнище которое они разгребали было написано человеком который находится рядом с ними в одном помещении ?
Спасибо за информацию

Anton
18.09.2018
21:22:18

Google

Damir
18.09.2018
21:22:52

Anton
18.09.2018
21:22:54
(Я в этом повозиться успел немношк)

Nikolay
18.09.2018
21:39:58

Damir
18.09.2018
22:11:54

Tim
19.09.2018
07:13:20
бесподобный преподобный егорушка бугаенко, да благославится имя его, да приидет мудрость его, тоже критикует DI
даже в джаве

Anton
19.09.2018
07:13:36
Так дхх против юнит тестов

Tim
19.09.2018
07:14:14
дхх ещё против длинных рабочих недель и опенспейсов

Anton
19.09.2018
07:15:19
(а почему?)
Потому что он верит, что интеграционные тесты покроют все что можно (поведенчиские)

Tim
19.09.2018
07:15:49
в той статье которую ты кидал нормальное сравнение было
если эдж кейсы обрабатывать
то юнит тестов надо 4 + 5 + 3 + 4
а интеграционных 4 * 5 * 3 * 4

Anton
19.09.2018
07:16:22
Ну как бы я о чем
Это к тому, что слушать дхх достаточно опасно
Особенно, когда юн и горяч

Tim
19.09.2018
07:16:52
ну зато у него есть ламбик а у нас нет

Anton
19.09.2018
07:17:40

Google

Anton
19.09.2018
07:18:01
Вообще всех надо подвергать сомнениям, даже тексты из моего канала

Tim
19.09.2018
07:18:17
ну, по дефолту нужно любую инфу подвергать сомнениям
но так чокнуться можно
чему-то приходится верить, потому что время и силы не безграничны

Aleksey
19.09.2018
07:18:43

Tim
19.09.2018
07:18:47
а известная информация в любой момент времени всегда неполная и недостаточная
да их просто амазон в своё время купил вот и все
насколько я знаю

Aleksey
19.09.2018
07:20:03
ну я в истории зарабатывания денег дхх не силен, но если заработал - то молодец
и он молодец и его партнеры тоже)))

Tim
19.09.2018
07:21:05
ну не всегда работает правило заработал – молодец, особенно в реалиях той страны, в которой нам всем посчастливилось жить
но в целом да

Tim
19.09.2018
07:21:39

Anton
19.09.2018
07:22:27

Tim
19.09.2018
07:25:15
Антон, я такой вкус сформировал в последнее время:
# fetches govno from third party API
class FetchGovno
EXPECTED_EXCEPTIONS = [Govno::AuthorizationError, NetworkError].freeze
def initialize(govno_id)
@govno_id = govno_id
end
def perform
fetch_govno!
rescue *EXPECTED_EXCEPTIONS
raise CouldNotFetchGovnoError
rescue StandardError => e
NewRelic.log(e, govno_id: @govno_id)
raise CouldNotFetchGovnoError
end
private
def fetch_govno!
...
end
...
end
Что скажешь?

Anton
19.09.2018
07:27:07
Да хз, выглядит крипово

Tim
19.09.2018
07:27:31
?
Зато: только один эксепшен выкидывается чтобы показать, что что-то пошло не так, а не эксепшены из кишков методов. Если внутренний эксепшен нужен будет при обработке, его можно будет достать через cause.
Если обнаружился непредусмотренный эксепшен, тогда он логируется в ньюрелик

Google

Anton
19.09.2018
07:32:23
На самом деле, мне вот интересно стало, почему люди так не хотят использовать result объект и делают все, что бы юзать что угодно, но не его

Tim
19.09.2018
07:32:52
юзание:
begin
FetchGovno.new('asdasd').perform
rescue CouldNotFetchGovnoError => e
respond('Third party API fetch error')
end

Dmitriy
19.09.2018
07:39:33
ксати да, где лучше реагировать на экспшен - внутри интерактора или при обработке его резалта?

Tim
19.09.2018
07:40:08
(суть нашего того спора)

Admin
ERROR: S client not available

Dmitriy
19.09.2018
07:40:08
по идее снаружи

Tim
19.09.2018
07:40:20
из класса не должны просачиваться эксепшены из кишок
во всяком случае просто так
злоупотреблять эксепшенами правда не надо, как в том примере
где приходит смска и надо понять что делать

Nikita
19.09.2018
07:42:18
зачем вообще перехватаывать эксепшены там где их не должно быть?

Tim
19.09.2018
07:42:36

Nikita
19.09.2018
07:42:53
ну да, у тебя там целая куча непонятных перехватов

Tim
19.09.2018
07:43:15
два перехвата
один для ожидаемых эксепшенов
другой для тех о которых наперёд не знаешь

Nikita
19.09.2018
07:43:39
а второй для всех остальных
ну и зачем? ну т.е зачем это перехватывать в том месте где не должно никак падать

Tim
19.09.2018
07:44:01
да, это для того чтобы наружу эксепшены из кишок класса не вываливались

Google

Nikita
19.09.2018
07:44:15
ну логично что если они вывалились

Tim
19.09.2018
07:44:21

Nikita
19.09.2018
07:44:38
значит должна прилететь ошибка в роллбар и нуплохо было бы об этом узнать и среагировать
тогда у тебя весь код будет из rescue состоять, а это булщит полный

Tim
19.09.2018
07:45:04
можешь посмотреть получше, я для неожиданных эксепшенов отправляю лог в ньюрелик
мой класс 1 эксепшен выводит, всё

Alex
19.09.2018
07:45:34
сервис должен ловить только ожидаемые ошибки

Tim
19.09.2018
07:45:35
больше ничего

rekero
19.09.2018
07:45:38
мы все эксепшны отправляем в ньюрелик

Alex
19.09.2018
07:45:52
если там что то еще произошло - это непредвиденная ситуация и мы хотим это быстро увидеть поэтому он начисто весь запрос положить должен

Nikita
19.09.2018
07:46:17
+

Tim
19.09.2018
07:46:18

Nikita
19.09.2018
07:46:24
да
а как еще