@scala_ru

Страница 1281 из 1499
Grigory
12.02.2018
13:09:24
больше контекста

Grigory
12.02.2018
13:09:38
генерируется
генерируется знач в рантайме то есть?

Nick
12.02.2018
13:09:48
больше контекста
нужно сунуть в логгер, поле версии из BuildInfo

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
A$A14$A$A14$Test$
это в репле?

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 просунуть поле

казалось бы, простая задача

Vladimir
12.02.2018
13:33:06
Oleg
12.02.2018
13:35:55
бакс тому как знает как рефлекисровать на скалке
https://scastie.scala-lang.org/Odomontois/9ZUAL6DoSyq1tDwbq9SPSg

короч, не пойму, почему так сложно вытащить кейз обжект

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
Интересно spring случаем не взрывается от object companion'ов
Мне кажется, для рукодельных синглтонов, там можно что-то наколдовать, чтобы спринг брал инстанс нужным тебе образом, а не вызывал конструктор

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

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

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
в прод код такую муру вставил? )
третий или четвёртый раз в жизни такую муру писал даже в воркшите

Страница 1281 из 1499