[Go] Realize가 편하니까 다시 친해지자.

10943 단어 Gorealize
realize,사용하셨어요?
Go에서 개발을 진행하면 매번go run ...마다 번거롭습니다. Go의 사람들은 핫 리셋(현장 리셋) 도구를 사용합니다. 그 중에서 저는 현재 가장 편리하게 사용할 수 있는realize의 사용 방법을 대체적으로 정리했습니다.

아무튼 인스타일.

$ go get -u github.com/oxequa/realize

사용법


프로젝트 노선에서 아래 명령을 입력하면 완성할 수 있다.realize.yaml.
$ realize start
내용은 이런 느낌.
realize.yaml
settings:
  legacy:
    force: false
    interval: 0s
server:
  status: false
  open: false
  port: 5002
  host: localhost
schema:
- name: realize-sample
  path: .
  commands: {}
  watcher:
    paths:
    - /
    extensions:
    - go
    ignored_paths:
    - .git
    - .realize
    - vendor
한 번ctl+C을 닫고 --server 옵션을 추가하여 실행합니다.
$ realize start --server
방문http://localhost:5002이 가능하므로 열어보면 대상 항목의 상황별 확인이 가능하다.
서류에 추가하거나 수정해 보면 어떤 서류를 만들었는지 알 수 있다.

참고로 -open 옵션을 추가해서 실행하면 브라우저에서 마음대로 열 수 있습니다.

모니터링


저는 평소에 echo 서비스를 많이 사용하기 때문에 echo 서버를 시작한 상태에서 열중량을 유효한 상태로 만듭시다.
.realize.yaml에서 다음과 같은 내용을 보충합니다.
realize.yaml
schema:
- name: realize-sample
  path: .
  # 修正ここから
  commands: 
    run:
      status: true
  # 修正ここまで
  watcher:
    paths:
    - /
다시 실행realize start --server.그래서 저는 echo가 시작할 때 익숙한 AA를 Realize 관리 화면Outputs에 한 줄씩 표시하고 싶습니다.
그나저나 리얼라이즈 내부에도 echo를 사용합니다.
(Fresh 같은 걸로 바꾸고 싶다는 생각이 들었어요)

Go 파일 이외에도 핫 리로드 객체로 사용


기본적으로 go만 감시할 수 있습니다.다른 파일을 감시 대상으로 삼으면 extensions에 추가하십시오.예를 들어''와'yaml'을 대상으로 하는 경우 다음과 같은 내용을 쓸 수 있다.
realize.yaml
watcher:
  paths:
  - /
  extensions:
  - go
  - html
  - yaml

여러 항목이realize 관리하에 있음


현재 프로젝트 노선.realize.yaml에서 여러 프로젝트를 통일적으로 관리할 수 있다.이 경우 path는 다음과 같습니다.
realize.yaml
schema:
- name: realize-sample
  path: /path/to/realize-sample
  commands:
이렇게 하면 매번 창고에 프로필을 놓을 필요가 없기 때문에 각자의 사용자 정의 설정에 따라 처리할 수 있다.
참고로 관리하던 프로젝트 설정을 취소할 때는 다음과 같다.
$ realize remove --name="realize-sample"

상호 작용 설정

realize init후 대화에서 창설.realize.yaml할 수 있습니다.
질문을 받은 내용은 다음과 같다.(누락된 것이 있으면 저에게 메시지를 남겨주시면 기쁩니다.
Question
Default
보태다
Would you want to customize settings? [y/n]
n
n으로 설정된 경우 항목만 설정
Set max number of open files (root required) [int]
os default
Force polling watcher? [y/n]
n
Enable logging files [y/n]
n
Enable web server [y/n]
n
Server port [int]
5002
Server host [string]
localhost
Open in current browser [y/n]
n
- Open과 동일
Would you want to add a new project? (insert '!' to stop) [y/n]
y
Project name [string]
프로젝트 전체 경로
Project path [string]
프로젝트 전체 경로
Enable go vet [y/n]
n
Vet additional arguments [string]
none
Enable go fmt [y/n]
n
Enable go test [y/n]
n
Enable go clean [y/n]
n
Enable go generate [y/n]
n
Enable go install [y/n]
y
Install additional arguments [string]
none
Enable go build [y/n]
n
Enable go run [y/n]
y
Customize watching paths [y/n]
n
모니터링 경로 설정
Customize ignore paths [y/n]
n
Add an additional argument [y/n]
n
Add a 'before' custom command (insert '!' to stop) [y/n]
none
Insert a command [string]
ex ls -al
Launch from a specific path [string]
n
Tag as global command [y/n]
n
Display command output [y/n]
n
Add an 'after' custom commands (insert '!' to stop) [y/n]
none
Insert a command [string]
ex. pwd
Launch from a specific path [string]
n
Tag as global command [y/n]
n
Display command output [y/n]
n
Set an error output pattern [string]
none

설정 파일이 여러 개 있을 때?


그럼에도 불구하고 realize start시에는 설정 파일이 있으면 사용하고 없으면 제작하기 때문에 현재 디렉터리.realize.yaml를 바탕으로realize가 시작됩니다.

기타


지금도 개발이 진행되고 있어 규격 변경이 자주 발생한다.
예를 들어 realize start 이전에도 realize run였다.
또한, README.md도 좀 낡았어요. 현재 설정 파일에 로그 파일을 설정하는 출력은 다음과 같은 예가 있어요.
realize.yaml
settings:
    legacy:
    resources:
        outputs: outputs.log
        logs: logs.log
        errors: errors.log
...
현재 출력 결과는 다음과 같다.
realize.yaml
settings:
    files:
        outputs:
            status: false
            path: ""
            name: .r.outputs.log
        logs:
            status: false
            path: ""
            name: .r.logs.log
        errors:
            status: false
            path: ""
            name: .r.errors.log
...

총결산


현재 공개된 정보와 사용 편의성은 다소 다르지만, 기존의 핫 리셋 도구와 비교하면
  • 설치 자유도 높음
  • 여러 프로젝트의 경우 동일한 설정으로 핫 로딩 관리
  • 갓 Go를 시작한 사람에게 가장 적합한 학습
  • 이 점은 나로 하여금 매우 쓰기 좋다고 느끼게 한다.
    하지만 다른 도구를 사용하지 않았기 때문에 더 좋은 도구를 알고 있는 사람이 아래 댓글로 몰래 알려주면 즐거울 거예요
    그럼!

    보태다


    그나저나 제가 릴리즈go get에 있을 때 아래의 포장으로 욕을 먹었어요.realize/Gopkg.lock에 적힌 지점에 맞추어 잘했어.
    # cd /path/to/go/src/golang.org/x/sys; git pull --ff-only
    You are not currently on a branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details.
    
        git pull <remote> <branch>
    
    package golang.org/x/sys/unix: exit status 1
    # cd /path/to/go/src/golang.org/x/crypto; git pull --ff-only
    You are not currently on a branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details.
    
        git pull <remote> <branch>
    
    package golang.org/x/crypto/acme/autocert: exit status 1
    # cd /path/to/go/src/golang.org/x/net; git pull --ff-only
    You are not currently on a branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details.
    
        git pull <remote> <branch>
    
    package golang.org/x/net/websocket: exit status 1
    # cd /path/to/go/src/gopkg.in/yaml.v2; git pull --ff-only
    You are not currently on a branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details.
    
        git pull <remote> <branch>
    
    package gopkg.in/yaml.v2: exit status 1
    

    좋은 웹페이지 즐겨찾기