The new Zooniverse API for supporting user-created projects.
The Panoptes public API is documented here, using apiary.io.
If you're interested in how Panoptes is implemented check out the wiki and the Data Model Description.
Since Panoptes uses Docker to manage its environment, the requirements listed below are also found in docker-compose.yml
. The means by which a new Panoptes instance is created with Docker is located in the Dockerfile
. If you plan on using Docker to manage Panoptes, skip ahead to Installation.
Panoptes is primarily developed against stable MRI, currently 2.4. If you're running MRI Ruby you'll need to have the Postgresql client libraries installed as well as have Postgresql version 9.4 running.
- Ubuntu/Debian:
apt-get install libpq-dev
- OS X (with homebrew):
brew install postgresql
Optionally, you can also run the following:
- Cellect Server version > 0.1.0
- Redis version > 2.8.19
We only support running Panoptes via Docker and Docker Compose. If you'd like to run it outside a container, see the above Requirements sections to get started.
-
Docker
-
Clone the repository
git clone https://github.com/zooniverse/Panoptes
. -
Install Docker from the appropriate link above.
-
cd
into the cloned folder. -
Run
docker-compose build
to build the containers Panoptes API container. You will need to re-run this command on any changes toDockerfile.dev
-
Install the gem dependencies for the application
- Run:
docker-compose run --rm --entrypoint="bundle install" panoptes
- Run:
-
Setup the configuration files via a rake task
- Run:
docker-compose run --rm --entrypoint="bundle exec rake configure:local" panoptes
- Run:
docker-compose run --rm --entrypoint="bundle exec rake configure:doorkeeper_keys" panoptes
- Alternatively, manually copy the example configuration files and setup the doorkeeper keys.
- Run:
find config/*.yml.hudson -exec bash -c 'for x; do x=${x#./}; cp -i "$x" "${x/.hudson/}"; done' _ {} +
- Run:
- Run:
-
Create and run the application containers with
docker-compose up
-
If the above step reports a missing database error, kill the docker-compose process or open a new terminal window in the current directory and then run
docker-compose run --rm --entrypoint="bundle exec rake db:setup" panoptes
to setup the database. This command will launch a new Docker container, run the rake DB setup task, and then clean up the container. -
To seed the development database with an Admin user and a Doorkeeper client application for API access run
docker-compose run --rm --entrypoint="bundle exec rails runner db/dev_seed_data/dev_seed_data.rb" panoptes
-
Open up the application in your browser at http://localhost:3000
Once all the above steps complete you will have a working copy of the checked out code base. Keep your code up to date and rebuild the image on any code or configuration changes.
There are multiple options for setting up a testing environment:
-
Run it entirely from within docker-compose:
- Run
docker-compose build
to build the panoptes container. - Install the gem dependencies for the application
- Run:
docker-compose run --rm --entrypoint="bundle install" panoptes
- Run:
- Create config files if you don't already have them, run
docker-compose run --rm -e RAILS_ENV=test --entrypoint="bundle exec rake configure:local" panoptes
- To create the testing database, run
docker-compose run --rm -e RAILS_ENV=test --entrypoint="bundle exec rake db:setup" panoptes
- Run the full spec suite
docker-compose run -T --rm -e RAILS_ENV=test --entrypoint="bundle exec rspec" panoptes
noting that running all tests is slow.- Use rspec focus keyword in your specs or specify the spec you want to run, e.g.
docker-compose run -T --rm -e RAILS_ENV=test --entrypoint="rspec path/to/spec/file.rb" panoptes
- Use rspec focus keyword in your specs or specify the spec you want to run, e.g.
- Run
-
Use parts of docker-compose manually and wire them up manually to create a testing environment.
- Run
docker-compose run -d --name postgres --service-ports postgres
to start the postgres container - Run
docker-compose run -T --rm -e RAILS_ENV=test --entrypoint="bundle exec rspec" panoptes
to run the full test suite
- Run
-
Assuming you have the correct Ruby environment already setup:
- Run
bundle install
- Start the docker Postgres container by running
docker-compose run -d --name postgres --service-ports postgres
or run your own - Create config files if you don't already have them, run
bundle exec rake configure:local
- Create doorkeeper keys, run
bundle exec rake configure:doorkeeper_keys
- Modify your
config/database.yml
test env to point to the running Postgres server, e.g.host: localhost
- Setup the testing database if you haven't already, by running
RAILS_ENV=test rake db:setup
- Finally, run rspec with
RAILS_ENV=test rspec
- Run
Thanks a bunch for wanting to help Zooniverse. Here are few quick guidelines to start working on our project:
- Fork the Project on Github.
- Clone the code and follow one of the above guides to setup a dev environment.
- Create a new git branch and make your changes.
- Make sure the tests still pass by running
bundle exec rspec
. - Add tests if you introduced new functionality.
- Commit your changes. Try to make your commit message informative, but we're not sticklers about it. Do try to to add
Closes #issue
orFixes #issue
somewhere in your message if it's addressing a specific open issue. - Submit a Pull Request
- Wait for feedback or a merge!
Your Pull Request will run on travis-ci, and we'll probably wait for it to pass on MRI Ruby 2.4. For more information, see the wiki.
Copyright 2014-2018 by the Zooniverse
Distributed under the Apache Public License v2. See LICENSE