DevGang
Авторизоваться

Горячая перезагрузка с использованием Air в golang 

Горячая перезагрузка — важная и наиболее часто используемая функция. Мы играем и меняем разные сообщения, логику внутри нашего кода. Есть простой способ его реализовать.

Сначала создадим http-сервер на golang:

Создайте файл с именем «server.go», внутри которого скопируйте приведенный ниже код:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello, Golang Dev"))
    })

    PORT := "5000"

    fmt.Println("Serverr running on port:", PORT)

    http.ListenAndServe(":" + PORT, nil)

}

Это создаст http-сервер, размещенный на порту «5000». Для запуска сервера

go run server.go

Вы можете увидеть сообщение: «Сервер работает на порту: 5000». Чтобы проверить это, перейдите в браузер и введите URL-адрес: http://localhost:5000/. Вы можете увидеть «Hello, Golang Dev» в качестве ответа.

Теперь, если вы хотите изменить это сообщение на «Hello World». Вам нужно перезапустить сервер, что занимает много времени и может быть не удобным. Есть много способов горячей перезагрузки. Здесь пойдет речь о «Air».

Air — это утилита командной строки, которая обеспечивает перезагрузку приложений Go в реальном времени. Чтобы установить его выполните в консоли:

go get -u github.com/cosmtrek/air

Затем создайте .air.conf в корневом каталоге.

# .air.conf
# Config file for [Air](https://github.com/cosmtrek/air) in TOML format

# Working directory
# . or absolute path, please note that the directories following must be under root.
root = "." 
tmp_dir = "tmp"

[build]
# Just plain old shell command. You could use `make` as well.
cmd = "go build -o ./tmp/main ."
# Binary file yields from `cmd`.
bin = "tmp/main"
# Customize binary.
full_bin = "APP_ENV=dev APP_USER=air ./tmp/main"
# Watch these filename extensions.
include_ext = ["go", "tpl", "tmpl", "html"]
# Ignore these filename extensions or directories.
exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules"]
# Watch these directories if you specified.
include_dir = []
# Exclude files.
exclude_file = []
# It's not necessary to trigger build each time file changes if it's too frequent.
delay = 1000 # ms
# Stop to run old binary when build errors occur.
stop_on_error = true
# This log file places in your tmp_dir.
log = "air_errors.log"

[log]
# Show log time
time = false

[color]
# Customize each part's color. If no color found, use the raw app log.
main = "magenta"
watcher = "cyan"
build = "yellow"
runner = "green"

[misc]
# Delete tmp directory on exit
clean_on_exit = true

Сначала проверьте правильность установки Air.

air -v

Если это работает, вы готовы к работе. В противном случае вам нужно настроить путь для «Air».

sudo mv ~/go/bin/air /usr/local/bin

Наконец, вместо того, чтобы запускать наше приложение Go с помощью обычной команды «go run server.go», используйте команду «air».

air

Надеюсь, что это работает.

#Golang
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В подарок 100$ на счет при регистрации

Получить