1
0
mirror of https://github.com/jcwimer/wrestlingApp synced 2026-04-14 17:06:46 +00:00

Added memcached and set up cached items for up_matches page

This commit is contained in:
2015-12-17 18:44:24 +00:00
parent 127474da9c
commit 983cc9c667
7 changed files with 34 additions and 7 deletions

View File

@@ -45,6 +45,7 @@ gem 'spring', :group => :development
gem 'passenger' gem 'passenger'
gem 'therubyracer' gem 'therubyracer'
gem 'newrelic_rpm' gem 'newrelic_rpm'
gem 'dalli'
end end
#Other #Other
gem 'devise' gem 'devise'

View File

@@ -48,6 +48,7 @@ GEM
execjs execjs
coffee-script-source (1.9.1.1) coffee-script-source (1.9.1.1)
concurrent-ruby (1.0.0) concurrent-ruby (1.0.0)
dalli (2.7.5)
devise (3.4.1) devise (3.4.1)
bcrypt (~> 3.0) bcrypt (~> 3.0)
orm_adapter (~> 0.1) orm_adapter (~> 0.1)
@@ -160,6 +161,7 @@ PLATFORMS
DEPENDENCIES DEPENDENCIES
cancancan cancancan
coffee-rails (~> 4.0.0) coffee-rails (~> 4.0.0)
dalli
devise devise
jbuilder (~> 2.0) jbuilder (~> 2.0)
jquery-rails jquery-rails

View File

@@ -66,8 +66,8 @@ class TournamentsController < ApplicationController
def up_matches def up_matches
@matches = @tournament.matches.where(mat_id: nil).order('bout_number ASC').limit(10).includes(:wrestlers) @matches = @tournament.cached_matches.select{|m| m.mat_id == nil}.sort_by{|m| m.bout_number}
@mats = @tournament.mats.includes(:matches) @mats = @tournament.mats
end end
def index def index
@@ -144,7 +144,7 @@ class TournamentsController < ApplicationController
def check_for_matches def check_for_matches
if @tournament if @tournament
if @tournament.matches.empty? if @tournament.cached_matches.empty?
redirect_to "/tournaments/#{@tournament.id}/no_matches" redirect_to "/tournaments/#{@tournament.id}/no_matches"
end end
end end

View File

@@ -18,6 +18,15 @@ class Mat < ActiveRecord::Base
end end
end end
def cached_matches
cache_timestamp = self.updated_at
cache_key = "matMatches|#{id}|#{cache_timestamp}"
Rails.cache.fetch(cache_key, expires_in: 10.minutes) do
self.matches.includes(:wrestlers)
end
end
def assignNextMatch def assignNextMatch
t_matches = tournament.matches.select{|m| m.mat_id == nil} t_matches = tournament.matches.select{|m| m.mat_id == nil}
if t_matches.size > 0 if t_matches.size > 0
@@ -28,7 +37,7 @@ class Mat < ActiveRecord::Base
end end
def unfinishedMatches def unfinishedMatches
matches.select{|m| m.finished == nil}.sort_by{|m| m.bout_number} cached_matches.select{|m| m.finished == nil}.sort_by{|m| m.bout_number}
end end
end end

View File

@@ -1,7 +1,7 @@
class Match < ActiveRecord::Base class Match < ActiveRecord::Base
belongs_to :tournament belongs_to :tournament, touch: true
belongs_to :weight belongs_to :weight, touch: true
belongs_to :mat belongs_to :mat, touch: true
has_many :wrestlers, :through => :weight has_many :wrestlers, :through => :weight
after_save do after_save do

View File

@@ -9,7 +9,14 @@ class Tournament < ActiveRecord::Base
has_many :wrestlers, through: :weights has_many :wrestlers, through: :weights
has_many :matches, dependent: :destroy has_many :matches, dependent: :destroy
def cached_matches
cache_timestamp = self.updated_at
cache_key = "tournamentMatches|#{id}|#{cache_timestamp}"
Rails.cache.fetch(cache_key, expires_in: 10.minutes) do
self.matches.includes(:wrestlers)
end
end
def tournament_types def tournament_types
["Pool to bracket"] ["Pool to bracket"]

View File

@@ -54,6 +54,14 @@ Wrestling::Application.configure do
# Use a different cache store in production. # Use a different cache store in production.
# config.cache_store = :mem_cache_store # config.cache_store = :mem_cache_store
config.cache_store = :dalli_store,
(ENV["MEMCACHIER_SERVERS"] || "").split(","),
{:username => ENV["MEMCACHIER_USERNAME"],
:password => ENV["MEMCACHIER_PASSWORD"],
:failover => true,
:socket_timeout => 1.5,
:socket_failure_delay => 0.2
}
# Enable serving of images, stylesheets, and JavaScripts from an asset server. # Enable serving of images, stylesheets, and JavaScripts from an asset server.
# config.action_controller.asset_host = "http://assets.example.com" # config.action_controller.asset_host = "http://assets.example.com"