LoginSignup
3
2

More than 3 years have passed since last update.

GoModules時代のホットリロード

Posted at

概要

Goでホットリロードを実現する場合、oxequa/realizeがお勧めとしてよく出てきます。
ですが、そのままではGo Modulesに対応していない問題があり、監視対象にgo.modが含まれているとエラーが出て正常に動いてくれません。

結論として、.realize.ymlに設定を追加した上でrealize startする必要があります。
古い記事にあるrealize start --runrealize 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を使うか、別のホットリロードツールを利用するのが良いのかもしれないですね。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2