nulogy/Gorgon

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Gorgon [![Build Status](https://travis-ci.org/nulogy/Gorgon.svg?branch=master)](https://travis-ci.org/nulogy/Gorgon) [![Gem Version](https://badge.fury.io/rb/gorgon.svg)](https://rubygems.org/gems/gorgon) [![Code Climate](https://codeclimate.com/github/nulogy/Gorgon/badges/gpa.svg)](https://codeclimate.com/github/nulogy/Gorgon)

About
---------------------

Gorgon provides a method for distributing the workload of running ruby test suites. It relies on amqp for message passing, and rsync for the synchronization of source code.

Installing Gorgon
-----------------
This [tutorial](/tutorial.md) explains how to install gorgon in a sample app. 

Installing listener as a Daemon process (Ubuntu 9.10 or later)
----------------------------------------------------------------
1. run `gorgon install_listener` from the directory where gorgon.json is
1. run `gorgon ping` to check if the listener is running

Gotchas
----------------------------------------------------------------

* if you get `cannot load such file -- qrack/qrack (LoadError)`, just add `gem 'gorgon', '~> 0.8.4' , :group => :remote_test` to your Gemfile, and run tests using `bundle exec gorgon`
* If `gorgon install_listener` didn't work for you, you can try [these steps](/daemon_with_upstart_and_rvm.md)

Also note that the steps in the tutorial are **not** meant to work on every project, they will only give you initial settings. You will probably have to modify the following files:
* gorgon.json
* gorgon_secret.json
* {test, spec}/gorgon_callbacks/gorgon_callbacks.rb
* gorgon_listener.json (located in your project root or in ~/.gorgon/)

If you modify ~/.gorgon/gorgon_listener.json, make sure you restart the listener.

Configuration
---------------------

### gorgon.json
This file contains project-specific settings for gorgon, such as:

* The connection information for AMQP
* The connection information for File Server
* Information about how clients can rsync the working directory (optional). See more info [here](/rsync_transport.md) 
* Files that can be excluded by rsync
* Callback file containing Ruby code to be used as callbacks
* A glob for generating the list of test files
* The file used for Originator's logs

See [gorgon.json example](/gorgon.json.sample) for an example file.

### gorgon_secret.json (optional)
This optional file contains sensitive information such as passwords that cannot be put in gorgon.json.

See [gorgon_secret.json example](/gorgon_secret.json.sample) for an example file.

### gorgon_listener.json
This file contains the listener-specific settings, such as:

* The connection information for AMQP
* How many worker slots are provided by this listener
* The file used for logs

See [gorgon_listener.json example](/gorgon_listener.json.sample) for more details.

Contributing
---------------------
Read overview [architecture](/architecture.md)

### Requirements:

* You only need [Docker](https://docs.docker.com/docker-for-mac/install/)

### Prepare your environment

* Execute `./run_dev_environment.sh`
* In a new terminal tab, execute `./run_listener.sh`

**NOTE:** If you make changes changes to `listener` code, you must restart `./run_listener.sh` for those changes to take effect

### Running all tests

* `./run_test.sh`

### Running gorgon using the `spec/dummy` project

* `./run_gorgon.sh`

Releasing to RubyGems
---------------------

1. Update `version.rb`
1. Run `rake release`

Credits
---------------------
Gorgon is maintained by:
* Justin Fitzsimmons
* Arturo Pie

Gorgon is funded by [Nulogy Corp](http://www.nulogy.com/).
Thank you to all the [contributors](https://github.com/nulogy/Gorgon/contributors).