21
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Realizeを使ってGoでホットリロードを実現する

Last updated at Posted at 2018-12-26

前置き

PHP や Ruby で開発をしていると普段あまり意識をすることがありませんが, PHP などとは違い, Goでは当然のことながらビルドを行わないとソースの変更は反映されません.

go run xxx.go と都度コマンドを打つのも一つの手ですが, 都度行うと手間です.

realize を使うことで, この面倒な問題を解決し, ホットリロードを実現してくれます.

Quickstart

go get github.com/oxequa/realize
$ realize start

ctl+C で起動を停止してみます.

すると, プロジェクトルートに .realize.yaml という設定ファイル出来ています.
.realize.yaml を編集し go run コマンドを監視してみましょう.

go run をウォッチしてみる

.realize.yaml
settings:
  legacy:
    force: false
    interval: 0s
schema:
- name: realize
  path: .
  commands: 
    run:           # 追記
      status: true # 追記
  watcher:
    extensions:
    - go
    paths:
    - / 
    ignored_paths:
    - .git
    - .realize
    - vendor

example

Hello World!! を表示する簡単なコードで試してみる

project
└── main.go
main.go
package main

import (
	"fmt"
	"log"
	"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "\Hello World/")
}

func main() {
	log.Print("test print")

	http.HandleFunc("/", handler)
	http.ListenAndServe(":8080", nil)
}

Watchする

$ realize start
% curl http://localhost:8080/
\Hello World/

ソースを変更してみると...

[00:33:54][REALIZE] : GO changed /Users/xxx/go/src/github.com/xxx/realize/main.go
[00:33:54][REALIZE] : Install started
[00:33:55][REALIZE] : Install completed in 1.005 s
[00:33:55][REALIZE] : Running..
[00:33:55][REALIZE] : 2018/12/26 00:33:55 test print

再度, curlで確認してみると結果が反映されていることが分かります.

curl http://localhost:8080/
Hello World!!!

Realize を組み合わせることで, 開発時の煩わしいビルド作業を意識することなく開発することが出来そうです. 

あでゅ

※ 追記: 私のプロジェクトでは, まだ dep を使用しているので問題なく使えておりますが, 「Realize が Go 1.11 の Modules で使えない」

といった報告もあるようです:relaxed:

21
13
1

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
21
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?