How to enable hot reload in your Gin project

WBOY
Release: 2024-08-22 20:31:02
Original
859 people have browsed it

How to enable hot reload in your Gin project

Gin is one of the fastest frameworks in the Go world. However, there is one feature missing in Gin is hot realod. So that in this blog I can show you how can you enable hot reaload feature in your Gin project.

Suppose this is your main.go fie

package main

import (
    "fmt"
    "net/http"
    "github.com/gin-gonic/gin"
)

func successResponse(data interface{}) gin.H {
    return gin.H{
        "status": "success",
        "data": data,
    }
}

func successResponseWithMessageAndCode(data interface{}, message string, code int,c *gin.Context) {
    c.JSON(code, gin.H{
        "status": "success",
        "data": data,
        "message": message,
    })
}

func main() {
    r := gin.Default()
    fmt.Println("Hello World")
    r.GET("/", func(c *gin.Context) {
        data:= map[string]interface{}{
            "message": "Hello World",
        }
        successResponseWithMessageAndCode(data, "Success", http.StatusOK, c)
    })

    r.GET("/hello", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "message": "Hello World",
        })
    })

    r.Run("localhost:8080")

}
Copy after login

So we can use Air (https://github.com/air-verse/air) - Live reload for your Go apps

Install Air by using this command ?

go install github.com/air-verse/air@latest
Copy after login

Then add .air.toml file using this command

air init
Copy after login

If the air command is not found, it might be because the Go bin directory is not in your PATH

In that case I’m using fish terminal

First, let's find out where Go installs binaries. Run this command:

echo $GOPATH/bin
Copy after login

If $GOPATH is not set, the default location is usually ~/go/bin.

Now, let's add this directory to your PATH in Fish. Open your Fish configuration file:

nano ~/.config/fish/config.fish
Copy after login

Add the following line to the file:

set -gx PATH $PATH $GOPATH/bin
Copy after login

If $GOPATH is not set, use the full path, like:

set -gx PATH $PATH ~/go/bin
Copy after login

Save the file and exit the editor.
Reload your Fish configuration:

 ~/.config/fish/config.fish
Copy after login

Now try running air again:

air
Copy after login

If you are using bash terminal you have to edit your .~/bashrc file.

Now edit .air.toml file

root = "."
tmp_dir = "tmp"

[build]
cmd = "go build -o ./tmp/main ."
bin = "tmp/main"
full_bin = "APP_ENV=dev APP_USER=air ./tmp/main"
include_ext = ["go", "tpl", "tmpl", "html"]
exclude_dir = ["assets", "tmp", "vendor"]
include_dir = []
exclude_file = []
log = "air.log"
delay = 1000 # ms
stop_on_error = true
send_interrupt = false
kill_delay = 500 # ms

[log]
time = false

[color]
main = "magenta"
watcher = "cyan"
build = "yellow"
runner = "green"

[misc]
clean_on_exit = true
Copy after login

Ensure your Gin application listens on localhost instead of just :8080 for better hot-reload behavior

r.Run("localhost:8080")
Copy after login

And now instead of run go run main.go , just run air and then see the magic.

The above is the detailed content of How to enable hot reload in your Gin project. For more information, please follow other related articles on the PHP Chinese website!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!