Rubellum fly light

ほぼPHP日記

rerunを使ったファイル変更検知と再実行:golang+echo編

rerun(ruby製)を使うとファイルの変更を検知してコマンドを再実行できます。

Webアプリケーションの開発中、ファイルを変更したらアプリケーションサーバーを再起動させています。

github.com

下記は.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