rerun(ruby製)を使うとファイルの変更を検知してコマンドを再実行できます。
Webアプリケーションの開発中、ファイルを変更したらアプリケーションサーバーを再起動させています。
下記は.goファイルの変更を検知してgo run 〜
コマンドを再実行するコマンドですが、うまくいきませんでした。
$ rerun -p "**/*.{go}" go run cmd/server.go
原因はgo run 〜
の実行プロセスと、ビルド後のプログラムのプロセス番号が異なるからでした。
go run コマンドは、「Goのソースコードをコンパイルしてからすぐに実行する」という2つのステップを組み合わせたコマンドです
プロセス番号が異なる問題を回避する方法がうまく思いつかず、ひとまずビルドと実行フェーズをそれぞれrerunを実行することで実現できました。
# ビルド $ rerun -c -p "**/*.{go}" -- go build -o app cmd/server.go # 実行 $ rerun -c -p "app" -- ./app