Size: a a a

2019 December 12

AL

Anton Lakotka in Kotlin JVM
Alexey Tkachenko
Люди, может кто-нибудь подсказать, как поделить конфиг для ktor на несколько файлов? Например, чтобы настройки сервера в одном файле, настройки базы — в другом, ещё какие-то настройки — в третьем?
ktor, настройки базы?
источник

AT

Alexey Tkachenko in Kotlin JVM
Anton Lakotka
ktor, настройки базы?
Ну ладно, чорт с ними, с настройками базы, их и правда можно самому прочитать. Пусть, например, список модулей будет в одном файле, настройка порта сервера — в другом, список модулей — в третьем
источник

AL

Anton Lakotka in Kotlin JVM
все еще не понимаю. мы точно про ktor говорим?

как по мне достаточно 1 файла который выглядит примерно как:

fun Application.ktorModule() {
  install(Foo)
  install(Bar)
  installCustomStuff()

 routes {
    users()
    catalog()
    cart()
    /* ... */
 }
}


все кастомные штуки описаны в отдельных файлах. основной модуль просто их всех объединяет.  без лишней кастомизации
источник

AL

Anton Lakotka in Kotlin JVM
про настройки я так и не понял
источник

AT

Alexey Tkachenko in Kotlin JVM
я говорю про файл application.conf, который выглядит примерно так:
ktor {
   deployment {
       port = 8080
       port = ${?PORT}
       watch = [ lab.app ]
   }
   application {
       modules = [lab.app.ApplicationKt.module ]
   }
}
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexey Tkachenko
Люди, может кто-нибудь подсказать, как поделить конфиг для ktor на несколько файлов? Например, чтобы настройки сервера в одном файле, настройки базы — в другом, ещё какие-то настройки — в третьем?
Почитайте доку от HOCON, там и дефолты, и include есть, и много другого
источник

AL

Anton Lakotka in Kotlin JVM
Alexey Tkachenko
я говорю про файл application.conf, который выглядит примерно так:
ktor {
   deployment {
       port = 8080
       port = ${?PORT}
       watch = [ lab.app ]
   }
   application {
       modules = [lab.app.ApplicationKt.module ]
   }
}
я не пользуюсь application.conf
я кроме ktor еще стартую кучу других вещей. независимых от ktor.
источник

AL

Anton Lakotka in Kotlin JVM
т.е. у меня свой Main файл
источник

AL

Anton Lakotka in Kotlin JVM
который выглядит примерно так:
suspended fun main() {
  startKtor()
  startFoo()
  startBar()
}
источник

AT

Alexey Tkachenko in Kotlin JVM
Anton Lakotka
я не пользуюсь application.conf
я кроме ktor еще стартую кучу других вещей. независимых от ktor.
ну вот да, я почитал документацию и мне показалось, что мне тоже придётся самому всё делать, не полагаясь на файл application.conf
источник

AT

Alexey Tkachenko in Kotlin JVM
Vladimir Petrakovich
Почитайте доку от HOCON, там и дефолты, и include есть, и много другого
почитал, но так и не сообразил, как сделать две вещи:
1. сделать один большой дефолтный конфиг в ресурсах, а второй с оверрайдами — в файловой системе
2. можно ли как-то поменять настройки ktor после того, как все конфиги загрузились, но до того, как стартанёт сервер
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexey Tkachenko
почитал, но так и не сообразил, как сделать две вещи:
1. сделать один большой дефолтный конфиг в ресурсах, а второй с оверрайдами — в файловой системе
2. можно ли как-то поменять настройки ktor после того, как все конфиги загрузились, но до того, как стартанёт сервер
1. В ресурсах сделать reference.conf, путь к основному указывать через system property
2. Не очень понятно, что вы хотите
источник

VP

Vladimir Petrakovich in Kotlin JVM
Ну и не исключено, что в итоге main будет проще самому написать, если какие-то хотелки нестандартные
источник

AT

Alexey Tkachenko in Kotlin JVM
В ресурсах сделать reference.conf, путь к основному указывать через system property
Вот это не понял. Что такое system property?
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexey Tkachenko
В ресурсах сделать reference.conf, путь к основному указывать через system property
Вот это не понял. Что такое system property?
Ну есть такая штука в джаве для разных параметров окружения и не только. Гугл должен помочь по данному вопросу.
источник

AT

Alexey Tkachenko in Kotlin JVM
Vladimir Petrakovich
Ну есть такая штука в джаве для разных параметров окружения и не только. Гугл должен помочь по данному вопросу.
А, эти проперти, понятно.
источник

AT

Alexey Tkachenko in Kotlin JVM
Как-то мои вопросы невпопад получаются, туповат, видать. Была надежда, что можно как в спринге прочитать разных конфигов из разных мест и они все сольются в один environment. Штош. Пойду писать свой загрузчик конфигов
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexey Tkachenko
Как-то мои вопросы невпопад получаются, туповат, видать. Была надежда, что можно как в спринге прочитать разных конфигов из разных мест и они все сольются в один environment. Штош. Пойду писать свой загрузчик конфигов
Так тут примерно то же самое, только профилей нет
источник

AT

Alexey Tkachenko in Kotlin JVM
Vladimir Petrakovich
Так тут примерно то же самое, только профилей нет
Похоже, можно попробовать так: собрать конфиг при помощи загрузчиков Hocon, потом из него создать HoconApplicationConfig и с ним запустить ktor.
Как-то так:
val appConfig = HoconApplicationConfig(ConfigFactory.parseFile(configFile))
val appEnv = applicationEngineEnvironment {
 config = appConfig
}
embeddedServer(Netty, environment).start()
источник

AO

Alexey Otts in Kotlin JVM
Alexey Tkachenko
Похоже, можно попробовать так: собрать конфиг при помощи загрузчиков Hocon, потом из него создать HoconApplicationConfig и с ним запустить ktor.
Как-то так:
val appConfig = HoconApplicationConfig(ConfigFactory.parseFile(configFile))
val appEnv = applicationEngineEnvironment {
 config = appConfig
}
embeddedServer(Netty, environment).start()
reference.conf + -Dconfig.file всё таки правильный путь а не вот эти костыли
источник