github.com/nycdavid/zeus@v0.0.0-20201208104106-9ba439429e03/contributing.md (about) 1 # Reporting issues 2 3 I'd love it if you could use this template for bug reports, but it's not 4 necessary: 5 6 ``` 7 ## Description of Problem 8 9 One or two sentences giving an overview of the issue. 10 11 ## System details 12 13 * **`uname -a`**: 14 15 * **`ruby -v`**: 16 17 * **`go version`**: (only if hacking on the go code) 18 19 ## Steps to Reproduce 20 21 1) `zeus start` in a new rails project 22 23 2) `zeus ponies` 24 25 ## Observed Behavior 26 27 * Ponies die 28 29 ## Expected Behavior 30 31 * Ponies survive 32 ``` 33 34 # Hacking on Zeus 35 36 ## Step 1: Prerequisites 37 38 Before you can get started, you'll need to install ruby 1.9+, Go (golang) 1.1+, 39 and make. 40 41 On OS X, you'll only need to install Go. 42 43 ## Step 2: Paths, etc. 44 45 You should check out this repository into `$GOPATH/src/github.com/burke/zeus`. 46 Often `$GOPATH` will be set to `~/go`, but this is configurable. If you've just 47 installed Go, you'll have to set this up yourself in your shell config. The Go 48 site [has documentation on this](http://golang.org/doc/code.html). 49 50 ## Step 3: Dependencies 51 52 cd into the zeus project directory and run `make`. This will fetch and 53 compile a couple libraries zeus uses for terminal interaction and such. 54 Read through that last chunk of the `Makefile` to understand what's 55 going on. 56 57 Of particular interest is [`gox`](http://github.com/mitchellh/gox), which we 58 use to crosscompile multiple binaries. 59 60 ## Step 4: Building 61 62 ### Context: How zeus is structured 63 64 The core of zeus is a single go program that acts as the coordinating process 65 (master, e.g. `zeus start`), or the client (called per-command, e.g. `zeus 66 client`). This code is cross-compiled for a handful of different architectures 67 and bundled with a ruby gem. The ruby gem contains all the shim code necessary 68 to boot a rails app under the control of the master process. 69 70 ### Building 71 72 Just run `make`, which would build the go binaries to `./build` 73 directory. This step might take some time to complete. 74 75 ## Releasing 76 77 Be aware that all release builts should be done on MacOSX to include the 78 binaries for MacOSX in the gem, when built on Linux only the linux binaries will 79 be included and therefor zeus will not work on linux. 80 81 * Build via normal `make`, this puts the build gem on in `rubygem/pkg/zeus-<VERSION>.gem` 82 * With access to rubygems run `gem push rubygem/pkg/zeus-<VERSION>.gem` 83 84 ## Step 5: Contributing 85 86 Fork, branch, pullrequest! I'm sometimes really bad about responding to these 87 in a timely fashion. Feel free to harass me on email or twitter if I'm not 88 getting back to you. 89 90 ## Questions? 91 92 If this doesn't work out for you, hit me up on twitter at @burkelibbey or email 93 at burke@libbey.me, or maybe @ischi on twitter can help as well. 94