1
0
mirror of https://github.com/danbee/scoreboard synced 2025-03-04 08:59:11 +00:00

Use redis-objects for persistence.

This has also simplified the code!
This commit is contained in:
Daniel Barber 2015-05-10 14:55:37 +01:00
parent 5e5a67fe56
commit 7e487167d1
5 changed files with 35 additions and 34 deletions

View File

@ -8,5 +8,8 @@ gem 'json'
gem 'sinatra'
gem 'pusher'
gem 'redis-objects'
gem 'connection_pool'
gem 'puma'
gem 'foreman', group: :development

View File

@ -1,6 +1,7 @@
GEM
remote: https://rubygems.org/
specs:
connection_pool (2.2.0)
dotenv (2.0.1)
foreman (0.78.0)
thor (~> 0.19.1)
@ -16,6 +17,9 @@ GEM
rack (1.6.0)
rack-protection (1.5.3)
rack
redis (3.2.1)
redis-objects (1.2.0)
redis (>= 3.0.2)
signature (0.1.8)
sinatra (1.4.6)
rack (~> 1.4)
@ -28,9 +32,11 @@ PLATFORMS
ruby
DEPENDENCIES
connection_pool
dotenv
foreman
json
puma
pusher
redis-objects
sinatra

View File

@ -4,28 +4,28 @@ class Match
end
def add_point(colour)
players[colour].add_point
players[colour].score.increment
if @one.has_beaten(@two)
reset_scores
@one.add_game
@one.games.increment
elsif @two.has_beaten(@one)
reset_scores
@two.add_game
@two.games.increment
end
end
def reset_scores
@one.reset_score
@two.reset_score
@one.score.reset
@two.score.reset
end
def reset_games
@one.reset_games
@two.reset_games
@one.games.reset
@two.games.reset
end
def total_games
@one.games + @two.games
@one.games.value + @two.games.value
end
def players

View File

@ -1,39 +1,24 @@
class Player
attr_reader :score, :games, :name
include Redis::Objects
counter :score
counter :games
def initialize(name)
@name = name
@score = 0
@games = 0
end
def has_beaten(player)
@score > 10 && @score > player.score + 1
end
def add_point
@score += 1
end
def add_game
@games += 1
end
def undo_point
@score -= 1
end
def reset_score
@score = 0
end
def reset_games
@games = 0
self.score.value > 10 && self.score.value > player.score.value + 1
end
def attributes
{ name: @name,
score: @score,
games: @games }
score: self.score.value,
games: self.games.value }
end
def id
@name.downcase.gsub(/[^a-z]/, '-')
end
end

View File

@ -8,6 +8,13 @@ require 'json'
require 'sinatra'
require 'pusher'
require 'redis'
require 'redis-objects'
require 'connection_pool'
redis_url = ENV['REDISCLOUD_URL']
Redis::Objects.redis = ConnectionPool.new(size: 5, timeout: 5) { Redis.new(url: redis_url) }
require './lib/match'
require './lib/player'