golang の WAF のオートリロード

https://github.com/codegangsta/gin

この gin ってやつを使うと
ソースコードの変更検知 + オートリロード が可能になる。


ちなみに、以下の WAF とは別物です。
https://github.com/gin-gonic/gin


https://github.com/codegangsta/gin#supporting-gin-in-your-web-app

ここにあるように、
PORT という環境変数で WAF を起動できるようにする必要があるので、
ソースコードに少しだけ手を入れる必要がある。
以下のようにすればいい。
http://qiita.com/k0kubun/items/64d177ceb9af07dfb78b#ginアプリを書く


アプリケーションは gin を通して起動する。
アプリケーションのルートディレクトリで gin と入力するだけ。
デフォルトは 3000 ポートで起動するが、--port のオプションで 80 などを指定できる。

[gosample]# gin
[gin] listening on port 3000

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:	export GIN_MODE=release
 - using code:	gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /ping                     --> main.main.func1 (3 handlers)
[GIN-debug] Listening and serving HTTP on :3001


ディレクトリ配下のファイルが変更されると、リロードが走る。
とっても便利。

gin を利用すると、
ディレクトリ直下に gin-bin というバイナリができる。
このバイナリは gin が作ったものなので、gitignore で無視するようにした方がいい。

ソースコードが変更されるたびに gin が gin-bin を更新されている。
アプリケーションの bin にあるバイナリを起動してみたら、
ソースコードを編集する前のものだった。
実際に実行されているのは gin-bin なのかな?

あと、オプションが色々あるので、ヘルプを見ると良い。

[gosample]# gin -h
NAME:
   gin - A live reload utility for Go web applications.

USAGE:
   gin [global options] command [command options] [arguments...]

VERSION:
   0.0.0

COMMANDS:
     run, r   Run the gin proxy in the current working directory
     env, e   Display environment variables set by the .env file
     help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --laddr value, -l value       listening address for the proxy server
   --port value, -p value        port for the proxy server (default: 3000)
   --appPort value, -a value     port for the Go web server (default: 3001)
   --bin value, -b value         name of generated binary file (default: "gin-bin")
   --path value, -t value        Path to watch files from (default: ".")
   --excludeDir value, -x value  Relative directories to exclude
   --immediate, -i               run the server immediately after it's built
   --godep, -g                   use godep when building
   --buildArgs value             Additional go build arguments
   --certFile value              TLS Certificate
   --keyFile value               TLS Certificate Key
   --help, -h                    show help
   --version, -v                 print the version