LoginSignup
6
1

More than 5 years have passed since last update.

Goのローカル環境構築(ソース変更をリロードのみで確認できるようにする)

Last updated at Posted at 2017-02-21

ゴール

  • 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にて反映するかを確認

参考

6
1
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
6
1