dev.log
Gin의 Watch 기능을 이용한 개발 본문
go는 싱글 바이너리를 지향합니다. 그래서 일반적으로 func main()에서부터 개발을 시작합니다. 이 main에 필요한 기능을 붙여서 micro하게 만들어 나갑니다.
개발 단계는 명확합니다.
- vim를 이용하여 코딩
- 파일 저장
- 콘솔에서 실행
이런 단계에서 반복적으로 콘솔화면에서
$ go run main.go
를 실행하는 상당히 불편합니다. 대신 파일이나 디렉토리의 변화를 감지하여 자동으로 실행시켜주는 tool이 있습니다.
보통 watch 기능이라고 부릅니다. dot net core의 경우에는 실행할 때 watch 옵션을 주면, panic 같은 상태만 아니라면 프로젝트의 어떤 파일을 수정, 저장해도 자동으로 반영됩니다.
go에서는 gin(Web Framework의 gin이 아닙니다)이라는 바이너리가 있습니다. 다음의 github url에서 다운로드합니다.
$ go get github.com/codegangsta/gin
기본 실행
$ gin run main.go
Help
$ gin -h
--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: ".")
--build value, -d value Path to build files from (defaults to same value as --path)
--excludeDir value, -x value Relative directories to exclude
--immediate, -i run the server immediately after it's built
--all reloads whenever any file changes, as opposed to reloading only on .go file change
--godep, -g use godep when building
--buildArgs value Additional go build arguments
--certFile value TLS Certificate
--keyFile value TLS Certificate Key
--logPrefix value Setup custom log prefix
--help, -h show help
--version, -v print the versiongin은 무엇보다 웹 서비스를 위한 watch tool이기 때문에 port proxy, tls 인증서 등을 지원합니다.
연습
Gin Web Framework를 이용하여 간단한 REST Server를 구성한다.
package main
import "fmt"
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "OK",
}
})
r.Run()
}
파일 저장하고 다른 콘솔창에서 gin을 이용하여 main.go를 실행한다.
$ gin run main.go
결론
goglang과 같은 ide를 사용한다면 ide가 제공하는 빌드, 실행 방법을 이용하는 것이 편하다. 하지만 vim와 같은 에디터툴로만 개발중이라면 gin 같은 watch 툴을 이용하여 조금 덜 수고스럽게 일하자.
'golang' 카테고리의 다른 글
Go를 지원하는 nginx unit (0) | 2017.09.28 |
---|---|
2017.09.17 GDG Seoul Meetup 자료 (0) | 2017.09.28 |
Go 라이브러리 검색하는 방법 (0) | 2017.09.28 |
Go의 의존성 관리도구 dep (0) | 2017.09.07 |
Go 1.9 Release (0) | 2017.09.07 |