zooniverse/Cellect

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Cellect

A scalable subject selector for [Panoptes](https://github.com/zooniverse/panoptes)

[![Build Status](https://travis-ci.org/zooniverse/Cellect.svg?branch=master)](https://travis-ci.org/zooniverse/Cellect)
[![Test Coverage](https://codeclimate.com/github/zooniverse/Cellect/badges/coverage.svg)](https://codeclimate.com/github/zooniverse/Cellect)
[![Code Climate](https://codeclimate.com/github/zooniverse/Cellect/badges/gpa.svg)](https://codeclimate.com/github/zooniverse/Cellect)
[![Gem Version](https://img.shields.io/gem/v/cellect.svg)](https://rubygems.org/gems/cellect)

Available as
  - [cellect-server](https://rubygems.org/gems/cellect-server)
  - [cellect-client](https://rubygems.org/gems/cellect-client)
  - [cellect](https://rubygems.org/gems/cellect)(combined)

## Cellect::Server

An actor based system that provides an API around subject selection actions.  Server nodes are discovered via [Attention](https://github.com/parrish/attention).

### Cellect::Server::Adapters

[An adapter](lib/cellect/server/adapters/default.rb) provides an API for defining the data to be used with the system.

We're overriding the default adapter with a customization in [cellect_panoptes](https://github.com/zooniverse/cellect_panoptes).


## Cellect::Client

Provides operations for server awareness and API communication.

API timeouts can be set with

```ruby
  Cellect::Client::Connection.timeout = 5 # seconds
```


## Building

1. Install [Boost V1.55+](http://www.boost.org/): OS X: `brew update && brew install boost`, Ubuntu: `sudo apt-get update && sudo apt-get install libboost-all-dev`
2. Install gem dependencies: `bundle` (See Note)


### Note
To install rice your Ruby must be compiled with shared libraries enabled, from the rice docs:
* rvm:   `rvm reinstall [version] -- --enable-shared`
* rbenv: `CONFIGURE_OPTS="--enable-shared" rbenv install [version]`


## Testing

* You'll need a local Redis server to run the specs.

Run the specs with `rake`

## Start server:

`rackup # uses config.ru file`

## Versions

See .travis.yml for supported ruby versions