ryanb / govsgo

Rails 3 app for playing the board game Go online.
http://govsgo.com
MIT License
140 stars 23 forks source link

Go vs Go

This is the source code for govsgo.com, a site for playing the board game Go online with other players or against the computer.

If you have problems or suggestions, please post them on the Issue Tracker.

Setup

Ruby 1.9.2 is required. If you're using RVM it should automatically switch to 1.9.2 when entering the directory.

Run the following commands to set it up. Note the Homebrew command to install GNU Go and Beanstalk. You may want to use a different packaging system or install them from the source.

bundle
cp config/database.example.yml config/database.yml
cp config/private.example.yml config/private.yml
rake db:create db:migrate
brew install gnu-go beanstalk

You can start up the server with rails s and run the specs with rake.

Background Process

In production, the computer moves are handled in a background process because GNU Go can take a while and we don't want to tie up the Rails process during this time.

If you want to test the background process, set background_process: true in your config/private.yml file. Next run beanstalkd and script/worker. to start up the processes. Alternatively you can use god to start and monitor it. See the config/god.rb file.

Fix GNU Go

If GNU Go seems to be stuck, it may have run into a game or two that it cannot complete. Run the following command in the rails console to clear out any old games that are stuck.

Game.where("current_player_id IS NULL AND finished_at IS NULL and updated_at < ?", 1.day.ago).update_all(:finished_at, Time.zone.now)

Then restart Beanstalkd, the worker, and web server.

sudo /etc/init.d/beanstalkd restart
god restart govsgo-worker
touch tmp/restart.txt

Credits

This site was originally created for Rails Rumble 2010 by Ryan Bates, James Edward Gray II and Phil Bates.