学習メモ。開発時にソースを書き換えた後、いちいちサーバーを止めて再起動させるのは非常にめんどくさいので自動リロードを設定する方法を書く。
基本的にはドキュメントのまま。
application.yaml
を修正
ktor:
application:
modules:
- com.example.ApplicationKt.module
+ development: true
deployment:
port: 8080
+ watch:
+ - classes
watch
はリソースの変更監視対象を書く。resources
も対象にしたい場合は、classes
の下にさらに追加すればよい。
変更時に再コンパイルされるように設定する
以下がそのコマンド。
./gradlew -t build -x test -i
テストを無視するために-x test
を追加する。
これをIntelliJの実行構成にrecompile
として登録しておく。
検証
Application.kt
でサーバーを起動後、recompile
を実行する。
この時点でhttp://0.0.0.0:8080/
へアクセスすると次のように表示される。
今度はRouting.kt
を以下のように修正する。
package com.example
import io.ktor.http.*
import io.ktor.serialization.kotlinx.json.*
import io.ktor.server.application.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import org.jetbrains.exposed.sql.*
import org.koin.dsl.module
import org.koin.ktor.plugin.Koin
import org.koin.logger.slf4jLogger
fun Application.configureRouting() {
routing {
get("/") {
- call.respondText("Hello Ktor!!")
+ call.respondText("Hello Ktor!! Reloaded!!")
}
}
}
保存すると再コンパイルが走る。
この状態でhttp://0.0.0.0:8080/
へアクセスすると…
LGTM👍