cloudfoundry-samples/pong_matcher_rails

Name: pong_matcher_rails

Owner: Cloud Foundry Sample Applications

Description: null

Created: 2014-12-19 23:23:21.0

Updated: 2017-09-19 14:20:24.0

Pushed: 2017-05-19 18:00:11.0

Homepage: null

Size: 32

Language: Ruby

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

CF example app: ping-pong matching server

This is an app to match ping-pong players with each other. It's currently an API only, so you have to use curl to interact with it.

It has an acceptance test suite you might like to look at.

Note: We highly recommend that you use the latest versions of any software required by this sample application.

Running on Pivotal Web Services

Log in.

ogin -a https://api.run.pivotal.io

Target your org / space. An empty space is recommended, to avoid naming collisions.

arget -o myorg -s myspace

Sign up for a cleardb instance.

reate-service cleardb spark mysql

Push the app. Its manifest assumes you called your ClearDB instance 'mysql'.

ush -n mysubdomain

Export the test host

rt HOST=http://mysubdomain.cfapps.io

Now follow the interaction instructions.

Running locally

The following assumes you have a working, recent version of Ruby installed.

Install and start MySQL:

 install mysql
l.server start
l -u root

Create a database user and table in the MySQL REPL you just opened:

TE USER 'railspong'@'localhost' IDENTIFIED BY 'railspong';
TE DATABASE pong_matcher_rails_development;
T ALL ON pong_matcher_rails_development.* TO 'railspong'@'localhost';

Install the project's dependencies:

le install --binstubs

Create and migrate the database:

rake db:create db:migrate

Start the application server:

rails s

Export the test host

rt HOST=http://localhost:3000

Now follow the interaction instructions.

Interaction instructions

Start by clearing the database from any previous tests. You should get a 200.

 -v -X DELETE $HOST/all

Then request a match, providing both a request ID and player ID. You should get a 204.

 -v -H "Content-Type: application/json" -X PUT $HOST/match_requests/firstrequest -d '{"player": "andrew"}'

Now pretend to be someone else requesting a match:

 -v -H "Content-Type: application/json" -X PUT $HOST/match_requests/secondrequest -d '{"player": "navratilova"}'

Let's check on the status of our first match request:

 -v -X GET $HOST/match_requests/firstrequest

The bottom of the output should show you the match_id. You'll need this in the next step.

Now pretend that you've got back to your desk and need to enter the result:

 -v -H "Content-Type: application/json" -X POST $HOST/results -d '

"match_id":"thematchidyoureceived",
"winner":"andrew",
"loser":"navratilova"

You should get a 201 Created response.

Future requests with different player IDs should not cause a match with someone who has already played. The program is not yet useful enough to allow pairs who've already played to play again.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.