
Anton
17.09.2018
11:50:04
Разные вещи же

Tim
17.09.2018
11:55:28
поцоны, всё хотел спросить
чё вы делаете с ответами со сторонних апи?
сохраняете как-нибудь? не сохраняете? почему?

Google

Tim
17.09.2018
11:55:57
если сохраняете, то куда и как

Zamira
17.09.2018
11:56:37
Мы только логгируем в отдельный лог файл

Tim
17.09.2018
11:56:39
я как то к определённому мнению по этому поводу не пришёл, но склоняюсь ближе к тому, что надо все ответы со сторонних апи сохранять

Zamira
17.09.2018
11:57:07
В формате запрос - ответ

Tim
17.09.2018
11:57:08
вплоть до того чтобы создавать сущность дублирующую штуку со стороннего сервиса
и типа в ней json поле ответ
в принципе да, надо и запрос хранить, хорошая идея
в реляционной?
а связи указываете?
ну типа, user_id который делал запрос и т.д.

Fedor
17.09.2018
11:58:37
Можно логировать именно этот неймспейс с дебаг уровнем

Tim
17.09.2018
11:59:10
Логи же есть
ну просто в хранении ответов профит я вижу не только в том чтобы отдебажить что-то

Google

Zamira
17.09.2018
11:59:21
Логи, потом в эластик загнать для поиска

Vasiliy
17.09.2018
11:59:24
зависит от апи - от платежек храню жсон в БД

Tim
17.09.2018
11:59:28
а ещё в том что сегодня нам надо только A, а завтра понадобится B

Fedor
17.09.2018
11:59:35
Не понял

Tim
17.09.2018
11:59:40
и так можно будет для всех старых запросов его автоматически зафетчить

Vasiliy
17.09.2018
12:00:08
ну так данные протухнуть могут же

Tim
17.09.2018
12:00:13
ну например, от сервиса приходит джейсончик
{
a: 'a',
b: 'b'
}
сегодня нам нужно только response[:a]
а завтра мы решаем что и response[:b]

Zamira
17.09.2018
12:00:45
Полностью сохраняйте в том виде, в котором приходит ответ
А не только часть
Смысл частями хранить?

Tim
17.09.2018
12:00:59

Fedor
17.09.2018
12:01:04
Ну так в логе сервера у тебя будет запрос со всеми параметрами и ответ полный
И все

Tim
17.09.2018
12:01:16
ну это парсить сложнее

Fedor
17.09.2018
12:01:17
Зачем логи задним числом править?

Tim
17.09.2018
12:01:21
плюс матчить с юзерами

Fedor
17.09.2018
12:01:36
Не вижу проблем

Tim
17.09.2018
12:01:44
ну я и не предлагаю править, а предлагаю более удобный способ их парсить

Google

Fedor
17.09.2018
12:02:11
Авторизация по токену, сразу создается uid запоса, который везде в логе есть
И все

Tim
17.09.2018
12:02:50
хорошо, а дальше просто файл парсить?
какие преимущества у этого перед созданием отдельной сущности?
условно, с полями json_b request, json_b response, user_id
и какие у этого могут быть подводные камни

Fedor
17.09.2018
12:06:33
Полнотекстовый поиск дико медленный
То что ты предлагаешь называется кибана
Работает на базе эластика, куда скармливаются текстовые логи

Anton
17.09.2018
12:08:09

Tim
17.09.2018
12:08:52
мб есть гем какой-нибудь для всего этого удобный?

Anton
17.09.2018
12:09:08
хотя ответы от платежного гейта храним в бд и работаем с ними потом из пг

Tim
17.09.2018
12:09:46
про логирование ответов со сторонних сервисов?

Anton
17.09.2018
12:10:06
про трасировку

Tim
17.09.2018
12:12:48
а про гем не знаешь?
может его имеет смысл запилить

Anton
17.09.2018
12:13:00
так написать и все
это 2 строки

Google

Anton
17.09.2018
12:25:49
логгирование параметров, логирование ответов. нафига крутить гем на это?
+ фарадей умеет это из коробки как мидлеваре

Tim
17.09.2018
12:29:07
ну я думал про таблицы + их привязку к классам условно SomethingRequest и SomethingResponse
ну типа пишешь в консоли
`rails generate_third_party_loggable_entity something references:user
Создаётся модель SomethingLog.
Дальше создаёшь классы где-то внутри кода SomethingRequest и SomethingResponse`

Admin
ERROR: S client not available

Tim
17.09.2018
12:31:23
чёто у меня разметка поехала

Vasiliy
17.09.2018
12:31:27
ты чето усложняешь себе жизнь

Tim
17.09.2018
12:34:16
а, нет, модель SomethingResponseLog, далее делаешь так
class SomethingResponse < LoggableResponse
def initialize(request)
@request = request # я предпочитаю такое делать в lazy моде
end
def to_h
...
end
потом у инстанса something_response вызываешь метод log

Anton
17.09.2018
12:35:16

Tim
17.09.2018
12:35:24
который в модель SomethingResponseLog запишет to_h у респонса и реквеста
и внутри их получать недостающие данные условно
при чём в класс модели, SomethingResponseLog, можно будет делегировать логику определения логов
типа
def error?
response['errors']
end
Тогда ошибки можно будет найти user.something_response_logs.select(&:error?)

Roman
17.09.2018
12:40:05
лучше уж сразу в elasticsearch кидать или influxdb, чтобы можно было метрики доставать и удобно читать

Tim
17.09.2018
12:40:09
для юзера

et
17.09.2018
12:41:53
это наверное от требований больше зависит, если тебе нужны логи ради логов, то проще в файл писать, а если ты подразумеваешь дльнейшуюю работу с ними как с моделями, то имеет смысл сделать как ты говоришь

Tim
17.09.2018
12:46:23
ок, хорошо

Google

Tim
17.09.2018
12:47:01
а с точки зрения этики/безопасности?

wi11son
17.09.2018
13:24:24
Широ?

Tim
17.09.2018
13:24:47

wi11son
17.09.2018
13:29:05
Хотел его поздравить

Silent Bob
17.09.2018
13:51:39
Такой вопрос - Hash#deep_merge штука хорошая , но тут я столкнулся с тем, что содержимое определенных рутовых ключей дип мержить не надо (надо просто мержить), а все остальные надо дип мержить. Может кто-то уже решал подобное?

Anton
17.09.2018
14:28:07

mr.Serj
17.09.2018
16:56:07
Реально не совсем понятно как жвт с отзывом и сроком жизни управлять на клиентах с постоянным хранением этого токена.

rabbitkate
17.09.2018
17:29:48
всем привет. подскажите пожалуйста, в чем может быть ошибка? когда запускаю файлы с расширением .feature в RubyMine, появляется ошибка
Error running 'file.feature': Feature file 'C' doesnt exist

Roman
17.09.2018
17:36:06
внизу в окошке лога?

rabbitkate
17.09.2018
17:36:44