Size: a a a

Scala User Group

2021 June 01

ИМ

Иван Малышев... in Scala User Group
так и чего, выходит что теперь R нужно только в конце мира? Раз сервисы все зависимости держат в конструкторе, то все методы, получается, без environment?
источник

AD

Apache DOG™ in Scala User Group
Неа, там этл из одной игрульки с гуем на котле
источник

λ

λoλcat in Scala User Group
да на самом деле он всегда был нужен только для динамических контекстов. а для зависимостей вместо злееров есть дистейдж, бм4 и другие техники
источник

λ

λoλdog in Scala User Group
Бтр и бмп
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
в R нужно класть контексты запросов, трейсы всякие
источник

ИМ

Иван Малышев... in Scala User Group
Мне тут посоветовали трейсы в FiberRef класть
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
не очень хороший способ как по мне (я не очень видел аргументацию конечно), но будет как-то неудобно думать, как меняется трейс в зависимости от смены файбера
источник

Т

Тёмыч in Scala User Group
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Вообще идея трейсов в R в том, чтобы в веб-сервере (кафка-консюмере етс., где получаем инпут) иметь всю логику обработки запроса как функцию типа handleRequest: ZIO[Trace with LogContext…, ProccessingError, Response]. Тогда можно трейсы и контекст для логов собрать и запровайдить при получении эффекту.

Выходит что-то вроде (на псевдозиокоде, кек):
for {
 request <- acceptRequest
 (context, trace) = buildCtxTrc(request)
  response <- handleRequest.provide(context).provide(trace)
} yield response
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
тогда можно обработку запроса с трейсами и контекстом представлять как сколь угодно сложный процесс с тыщей файберспавнов внутри, но не думать о том, что что-то потеряется или изменится
источник

ИМ

Иван Малышев... in Scala User Group
Гм, ну если весь контекст генерится в начале запроса, то с FiberRef выходит то же самое по идее, оно сохраняет содержимое для всех дочерних файберов
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
а для файбер рефа тоже есть зиошный локал?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
ну то есть возможность как-то брать и менять контекст на лету, как в Reader
источник

VD

Vladislav Dolbilov in Scala User Group
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
именно. Ну похож, как минимум.
источник

λ

λoλdog in Scala User Group
fiberref - copy on fork
источник

Oℕ

Oleg ℕizhnik in Scala User Group
складывание трейса в файберреф не избавляет тебя от необходимости иметь этот инициализированный реф в контексте
источник

Oℕ

Oleg ℕizhnik in Scala User Group
или хотя бы в виде сервиса
источник

Oℕ

Oleg ℕizhnik in Scala User Group
минус сервиса в том, что доступ к трейсу нужен будет в любом месте логирования, а значит это будет сервис, который должен будет быть прокинут вообще везде
источник

Oℕ

Oleg ℕizhnik in Scala User Group
вот и модуляризация
источник