99designs / ior

Install On Request - Dead simple docker safe code reloading for golang

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ior

ior

usage

go get github.com/vektah/ior

cd $GOPATH/src/github.com/you/yourapp
ior -listen ":1234" -- [args passed through to your app]

What it does

  1. Wait for a request.
  2. Hashes all go files, excluding vendor, and other common large directories
  3. If the hash changes, do a go install, show errors if it fails otherwise restart the server

Thats it. No inotify, no fsevents, no polling, no CPU chewing. 100% docker-machine friendly. 100% nfs friendly.

How long does it take really?

On a project with ~30k lines across ~300 files it adds about 50ms to every request, this is just the time it takes to hash.

Because its using go install rather than go build it also leverages the pkg cache, so small changes are pretty quick to compile.

Related projects

Releases

This uses (GoReleaser](https://goreleaser.com) to build and release go binaries. There is a GitHub Actions workflow configured to run this on any new tags pushed. In order to create a new release, from the master branch:

git tag vx.x.x e.g. v1.0.0
git push --tags

This should trigger the workflow to automatically create a new release. Once it has run, you should see a new release at https://github.com/99designs/ior/releases. Currently GoReleaser is configured to autogenerate a changelog based on commits.

The configuration for GoReleaser is in .goreleaser.yaml. This specifies what operating systems and architectures to build for along with any other customization we want. You can read more about what can be configured here: https://goreleaser.com/customization/

About

Install On Request - Dead simple docker safe code reloading for golang

License:MIT License


Languages

Language:Go 100.0%