ゴール
- HotReloadにより毎回
go run
し直さなくて良い状態にする
godoによるHot Reload構築手順
サンプルのソースはmain.goのみのあるシンプルな構成です。
echoライブラリを利用
プロジェクト構成
├── Gododir
│ ├── godobin-2.0.9
│ └── main.go // godoのmainファイル ※2
├── glide.lock
├── glide.yaml
├── main.go // メインのHello Worldを表示するソース ※1
└── vendor // 外部ファイルの置き場所
├── github.com
└── golang.org
main.go(サンプルのメインソース)※1
package main
import (
"net/http"
"github.com/labstack/echo"
)
func main() {
e := echo.New()
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
})
e.Logger.Fatal(e.Start(":8081"))
}
http://localhost:8081
にアクセスしたらHello World!を表示するためのシンプルなソース
glideにて関連パッケージをインストール
glide.ymlの作成
glide create
パッケージのDL
glide up
godoをインストール
go get -u gopkg.in/godo.v2/cmd/godo
godoの監視ソースの作成
Gododir親ディレクトリのmain.goの変更を監視するスクリプト
main.go(godo)※2
package main
import (
do "gopkg.in/godo.v2"
)
func tasks(p *do.Project) {
p.Task("server", nil, func(c *do.Context) {
// rebuilds and restarts when a watched file changes
c.Start("main.go", do.M{"$in": "./"})
}).Src("*.go", "**/*.go").
Debounce(3000)
}
func main() {
do.Godo(tasks)
}
監視のテスト
cd (Projectのroot)
godo server --watch
http://localhost:8081
にアクセスしてから、対象のmain.goを書き換えてから、ブラウザReloadにて反映するかを確認
参考