
Dmitry
17.05.2017
11:57:02
ивообще Transactor[monix.Task]?
вместе с дубёй
дуби идет с fs2
там есть транзакторы в fs2.Task, IOLite

Google

Dmitry
17.05.2017
11:57:53
в 0.4
в monix.Task вроде не было

Kirill
17.05.2017
11:58:13
как я по доке понял, и моникс по идее
Similar types like scalaz.effect.IO, scalaz.concurrent.Task, fs2.Task, and monix.Task also work fine.

Dmitry
17.05.2017
12:00:11
Из каробки не забработает
кароч
M[_]: Catchable: Suspendable]
если будет monix.Task: fs2.Catchable: fs2.Suspendable

Kirill
17.05.2017
12:01:05
Роджер. Жаль, что так. Хотел намешать себе смузи из библиотек, которые ни разу в глаза не видел. Видимо стоит расслабиться и выкинуть моникс в таком случае.

Dmitry
17.05.2017
12:01:22
https://github.com/monix/monix/issues/299
типа того
можно попробовать

Google

Kirill
17.05.2017
12:07:49
О, спасибо! Вечерком попробую. Для начала сооружу хоть что-то работающее на fs2

Nick
17.05.2017
12:46:59
@steveOrElse в твоем случаем, мне кажется ты гдет импорт потерял

Dmitry
17.05.2017
12:48:42
жаль, но нет

Nikita
17.05.2017
12:49:03
какие есть best practice чтобы передавать контекст в акковских стримах? например flowId для каждого элемента. я пока лучше враппера ничего еще не придумал, но это выглядит некрасиво и костыльно

Nick
17.05.2017
12:49:41

KrivdaTheTriewe
17.05.2017
13:18:01
https://github.com/typelevel/general/issues/74#issuecomment-301990373 продолжение банкета

Юрий
17.05.2017
13:33:05

Vadim
17.05.2017
13:46:06
Ребят как мокать play.api.Logger?

Denis
17.05.2017
13:47:13
trait Logger[F[_]] {
def debug(message: String): F[Unit]
}

Aleksey
17.05.2017
13:48:17

Denis
17.05.2017
13:48:47
твоя правда
как бы много я отдал за forall в скале чтоб можно было писать
def foo[M[_[_]], A](f: forAll F[_]. M[F] => F[A]]): Foo = ...
foo[Logger](_.debug("bar"))
или хотя бы f: (M[F] => F[A]) forAll { type F[_] }
для консистентности с forSome

Vadim
17.05.2017
13:58:49
Так это же object

Daniel
17.05.2017
13:58:56
че то намешал в кучу два синтаксиса и не понятно что имелось ввиду
то ли функция, то ли экземпляр класса

Vadim
17.05.2017
13:59:05
Вопрос скорее в том как мокать object

Diemust
17.05.2017
14:00:58
делай явный синглтон с инжектом, если di есть, например

Nikolay
17.05.2017
14:02:00
а для чего мокать логгер?
просто любопытно

Google

Vadim
17.05.2017
14:03:47
Причины две: тестировать корректный вызов логгера, игнорировать печать логов в тестах

Denis
17.05.2017
14:04:33
тогда лучше инжектить абстрактный интерфейс
и в тестах подсовывать свою реализацию с Vector[String] а в проде с play.api.Logger

Vadim
17.05.2017
14:06:02
Походу так и надо делать
Спасибо
Размышлял над этим но думал есть же что то готовое от плэй

Denis
17.05.2017
14:07:27

Nick
17.05.2017
14:23:00

Dmitry
17.05.2017
14:23:26
ну а если логирование важный эффект?
и важно проверить что там

Nikolay
17.05.2017
14:23:59
запись в базу через логи)

Dmitry
17.05.2017
14:24:11
запись в логи через логи

Alex
17.05.2017
14:26:35
через блоги

Pavel
17.05.2017
14:27:29
"в прод мне логи" (с)

Wystan
17.05.2017
14:28:59
Раз вместо бизнес логики тестируешь логирование

Dmitry
17.05.2017
14:29:20
так то да

Vadim
17.05.2017
14:30:50
Херню придумывать приходиться по тому что Logger object
точка

Vladimir
17.05.2017
14:39:18
Разве там еще не все, включая логгер инжектить надо?

Google

Vladimir
17.05.2017
14:39:37
но то, что его инжектить можно, это факт

Nick
17.05.2017
14:44:22

Dmitry
17.05.2017
14:44:45
ну инстансом видимо

Nick
17.05.2017
14:44:58
а object не инстанс? )

Vadim
17.05.2017
14:45:25
Как Configuration мне подойдет

Nick
17.05.2017
14:46:30

Vadim
17.05.2017
14:47:20
Не всегда в том то и дело

Nick
17.05.2017
14:47:31
в каких случаях нельзя?

Vadim
17.05.2017
14:47:44
Когда нет времени все переписывать

Nick
17.05.2017
14:48:00
эм
кстати всеми любимый LazyLogging берет имя класса когда делает getLogger, дальше можно просто в каком нибудеь logback.xml чо угодно навернуть
вообще ничего не переписывая

Dmitry
17.05.2017
14:49:40
навернуть верное слово

Vadim
17.05.2017
14:49:59
на днях попробую разобраться

Diemust
17.05.2017
14:50:15
нет времени переписывать логер, но есть время его тестировать? я не понимаю кейс и так обидно становится =(

Nick
17.05.2017
14:50:28
зачем его переписывать?
и тем более мокать)
его можно конечно через powermock замокать, но зачем?

Vadim
17.05.2017
14:59:31
Ну давай прикинем что ловим исключение и пишем в лог. Какая тут альтернатива?

Nick
17.05.2017
15:05:28
вынести логику, которая кидает исключение и тестировать отдельно ее

Google

folex
17.05.2017
17:41:24
А есть какая-то классная библиотека, которая позволяет сделать
def a(b: Int, c: Int) = b + c
a.tupled
?
То есть оно же работает вот так
(a : (Int, Int) => Int).tupled
Неужели сложно написать макрос/метод, который всегда будет требовать function в типе?
Надоело писать (a _), это уродство

Kirill
17.05.2017
17:45:24
а то, что идея не переваривает дуби, это норм или лечится?

Mikhail
17.05.2017
17:48:12
кто читает скала чат, тот в цирке не смеется ?

Nick
17.05.2017
17:53:53

folex
17.05.2017
17:55:04
или хочу синтаксис methodName.toFunction.tupled

Nick
17.05.2017
17:58:56
Определи a сразу с tuple )))

Mikhail
17.05.2017
18:00:47

anton
17.05.2017
18:07:36
кстати, то что slick все сливают - это я понял..
но почему doobie, а не quill например? расскажите неопытному..

Aleksei
17.05.2017
18:08:21
typelevel ибо

Dmitry
17.05.2017
18:09:13
doobie это фриалгебра по сути
Не орм
Не фрм