
Grigory
12.02.2018
13:09:24
больше контекста

Vadim
12.02.2018
13:09:25

Grigory
12.02.2018
13:09:38

Nick
12.02.2018
13:09:48

Google

Grigory
12.02.2018
13:10:07
оно есть в компайл тайме
BuildInfo.version

Nick
12.02.2018
13:10:20
BuildInfo нету

Grigory
12.02.2018
13:10:22
есть

Nick
12.02.2018
13:10:24
либа другая
сложная депенденси история

Grigory
12.02.2018
13:10:50
эт ну сделай свой билдинфо
тудаж писать можно что угодно
но я шот не понял
как это у ника ничего нету

Oleg
12.02.2018
13:11:42
val runtimeCaseObjects = Map(
"name" -> obj, ....

Nick
12.02.2018
13:11:53
logger либа не зависит от проложухи, а билд инфо добавляется как плагин в приложухе
ну ты понял)

Google

Daniel
12.02.2018
13:12:40
завязывай обедать с гоферами

Юрий
12.02.2018
13:13:16
Звучит как задача для рантайм рефлексии

Oleg
12.02.2018
13:14:02

Nick
12.02.2018
13:14:14
а он генерится в приложухе

Oleg
12.02.2018
13:14:40
ну так должен же быть какой-то класс-лоадер, который таки знает о нём?

Grigory
12.02.2018
13:15:04
если нету класса в рантайме, то как ты хочешь его получить?

Nick
12.02.2018
13:15:10
фаак
есть либа для логинга
есть приложуха в которой генерится билдинфо

Юрий
12.02.2018
13:15:35

Nick
12.02.2018
13:15:44
рефлексию нужно добавить в либу для логинга
зная только имя класса
в приложении то все ок будет, в рантмайме класс есть
в компаил тайме нету

Grigory
12.02.2018
13:16:07
если ты знаешь полное имя класса то в рантаме оно разрезолвит при условии что есть класс в рантайме
ну и в чем дело то
в рантайме дерни

Nick
12.02.2018
13:16:20
как?
Class.forName для скалки не работает)

Google

Grigory
12.02.2018
13:16:53
работает

Nick
12.02.2018
13:16:59
ну если ты знаешь имя класса

Юрий
12.02.2018
13:17:01
Тока бакс добавь

Nick
12.02.2018
13:17:17
там case object

Grigory
12.02.2018
13:17:19
бакс тому как знает как рефлекисровать на скалке
создай у ся кейс обжект и посмотри какое имя у него в рантайме

Nick
12.02.2018
13:18:12
A$A14$A$A14$Test$
бакс добавь, ага)

Grigory
12.02.2018
13:18:43
отлично
ну и рефлексией выдерни из инстанса обекта значение по имени поля

Oleksandr
12.02.2018
13:19:09

Nick
12.02.2018
13:19:16
это в репле

Grigory
12.02.2018
13:19:16

Юрий
12.02.2018
13:19:20
Сделай генерацию в компайл тайм, будь скаланом

Grigory
12.02.2018
13:19:34

Nick
12.02.2018
13:19:44
Юрий там с джава кодом пляски

Grigory
12.02.2018
13:20:13
ну создай прям тож самое ток в структуре твоего проекта и дерни принтлн класснейма

Юрий
12.02.2018
13:20:28

Nick
12.02.2018
13:20:32
в анус кароч эту джаву)

Google

Nick
12.02.2018
13:20:48
прост нужно в logback просунуть поле
казалось бы, простая задача

Daniel
12.02.2018
13:21:30

Vladimir
12.02.2018
13:33:06

Oleg
12.02.2018
13:35:55
короч, не пойму, почему так сложно вытащить кейз обжект

Nick
12.02.2018
13:38:44
val mirror = ru.runtimeMirror(getClass.getClassLoader)
val clazz= Class.forName("zaza$")
val module = mirror.moduleSymbol(clazz).asModule
val instance = mirror.reflectModule(module).instance
val instanceMirror = mirror.reflect(instance)
val objectType = module.typeSignature
val methodMap = objectType.members
.filter(_.isMethod)
.map(d => {
d.name.toString -> d.asMethod
})
.toMap
val result = instanceMirror.reflectMethod(methodMap("version")).apply().asInstanceOf[String]
result
}
проблема в том, что в репле по другому

Oleg
12.02.2018
13:39:35
ну не используй в репле

Alexey
12.02.2018
13:40:11
Вроде же в скаловой рефлексии можно попросить класс и его компаньона?

Oleg
12.02.2018
13:40:37
Кстати, давно ли предлагали guice ну или там spring boot, EJB

Grigory
12.02.2018
13:41:42

Alexey
12.02.2018
13:42:01
Интересно spring случаем не взрывается от object companion'ов

Grigory
12.02.2018
13:42:21
макаронный взрыв?

Oleg
12.02.2018
13:43:22

Denis
12.02.2018
13:43:59
можно компилить в рантайме)
Лучше рантаймить в компайл тайме :) а есть уже compiletime серверы которые работаеют во время компиляции, конечно же бесконечной?

Oleg
12.02.2018
13:44:29

Denis
12.02.2018
13:44:45
Я слышал тебе нравится compiletime по этому мы сделали его твоим рантаймом

Google

Denis
12.02.2018
13:45:17
добавил

Oleg
12.02.2018
13:45:54
Бесконечная компиляция хардкорновато, непонятно, как оттуда вытащить промежуточный результат, кроме как инфо отмакросов
И как чистить память
А вот инкрементальная....

Denis
12.02.2018
13:47:25
промежуточный результат через compile time IO

Oleg
12.02.2018
13:48:04
вместо Class.forName

Nick
12.02.2018
14:24:11

Alexander
12.02.2018
14:36:44
в прод код такую муру вставил? )

Grigory
12.02.2018
14:40:43
Олег муры не творит

Alexander
12.02.2018
14:49:26
тож тогда вставлю себе поглубже!

Diemust
12.02.2018
15:02:50
кто-нибудь знает, как кросс-тестить scalajs код на jvm и js? я тут криптографию заимплементил и надо бы написать тесты на то, что что генерируется в js хавается в jvm и наоборот

Alexey
12.02.2018
15:04:25
Ну это не кросс тест, а интеграция какая то

Oleg
12.02.2018
15:14:37