概要
Goでホットリロードを実現する場合、oxequa/realizeがお勧めとしてよく出てきます。
ですが、そのままではGo Modulesに対応していない問題があり、監視対象にgo.mod
が含まれているとエラーが出て正常に動いてくれません。
結論として、.realize.yml
に設定を追加した上でrealize start
する必要があります。
古い記事にあるrealize start --run
やrealize start --run --no-config
では動かないので注意。
なお、設定についてはこちらの記事の通り。
.realize.yamlの設定
commands
の下位項目としてinstall
を追加し、監視対象に変更が入ったらapp.out
としてビルドして吐き出します。
run
として吐き出したapp.out
を実行します。
schema:
# 略
commands:
install:
status: true
method: go build -o app.out /your/src/path
run:
status: true
method: ./app.out
# 略
まとめ
Go1.11互換性に関するissueを遡ると、2019年1月時点で、oxequa/realizeは開発放棄されてるんじゃない?みたいな旨もあります。
Docker環境で使う際に発生するgopkg.in/urface/cli.v2のバージョン違いによるビルドエラーの対策も対症療法的で、プルリクが随分前から無視されているようです。
今後はforkされたrealizeを使うか、別のホットリロードツールを利用するのが良いのかもしれないですね。