Как мы можем использовать автоматическую перезагрузку?

Попытка использовать функцию автоматической перезагрузки модуля (как описано здесь), но, к сожалению, документация не слишком полезна.

В нем сказано использовать конфигурацию, но страница конфигурации пуста.

Я полагаю, что вы можете перейти в список "смотреть" модулей в embeddedServer() звоните с этой страницы, но когда я это сделаю, я получаю следующее исключение: Module function provided as lambda cannot be unlinked for reload,

Так что он не позволит вам передать лямбду в качестве модуля приложения, но тогда я не уверен, как избежать этого при получении доступа к Application методы (например, routing()).

Кто-нибудь был в состоянии заставить автоматическую перезагрузку работать в последнее время? Если так, то как?

1 ответ

Решение

Лямбда может иметь захваченное состояние из содержащей функции и, следовательно, не может быть перезагружено - нет способа восстановить захваченное состояние. Вы должны извлечь приложение в отдельную функцию, например:

fun Application.module() {
   install(CallLogging)
   install(Routing) {
      get("/") {
        call.respondText("""Hello, world!<br><a href="/bye">Say bye?</a>""", ContentType.Text.Html)
      }
    …
   }
}

А затем запустите его со ссылкой на функцию:

embeddedServer(Jetty, watchPaths = listOf("embedded"), module = Application::module).start()
Другие вопросы по тегам