Merge pull request #295 from AyuntamientoMadrid/cache
Adds cache to debates/index
This commit is contained in:
1
Gemfile
1
Gemfile
@@ -41,6 +41,7 @@ gem 'initialjs-rails', '0.2.0'
|
||||
gem 'unicorn'
|
||||
gem 'paranoia'
|
||||
gem 'savon'
|
||||
gem 'dalli'
|
||||
|
||||
gem 'ahoy_matey', '~> 1.2.1'
|
||||
gem 'groupdate' # group temporary data
|
||||
|
||||
@@ -111,6 +111,7 @@ GEM
|
||||
simplecov (~> 0.10.0)
|
||||
term-ansicolor (~> 1.3)
|
||||
thor (~> 0.19.1)
|
||||
dalli (2.7.4)
|
||||
database_cleaner (1.4.1)
|
||||
debug_inspector (0.0.2)
|
||||
devise (3.5.2)
|
||||
@@ -402,6 +403,7 @@ DEPENDENCIES
|
||||
ckeditor
|
||||
coffee-rails (~> 4.1.0)
|
||||
coveralls
|
||||
dalli
|
||||
database_cleaner
|
||||
devise
|
||||
email_spec
|
||||
|
||||
16
app/helpers/cache_keys_helper.rb
Normal file
16
app/helpers/cache_keys_helper.rb
Normal file
@@ -0,0 +1,16 @@
|
||||
module CacheKeysHelper
|
||||
def locale_and_user_status
|
||||
@cache_key_user ||= calculate_user_status
|
||||
"#{I18n.locale}/user:#{@cache_key_user}"
|
||||
end
|
||||
|
||||
def calculate_user_status
|
||||
user_status = if user_signed_in? && current_user.verified_at.present?
|
||||
"verified"
|
||||
elsif user_signed_in?
|
||||
"signed"
|
||||
else
|
||||
"visitor"
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,5 @@
|
||||
<div id="<%= dom_id(debate) %>" class="debate">
|
||||
<% cache [locale_and_user_status, debate] do %>
|
||||
<div id="<%= dom_id(debate) %>" class="debate">
|
||||
<div class="panel">
|
||||
<div class="row">
|
||||
|
||||
@@ -25,4 +26,5 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<div class="small-12 medium-4 column">
|
||||
<% cache [locale_and_user_status, featured_debate, 'featured'] do %>
|
||||
<div class="small-12 medium-4 column">
|
||||
<div id="<%= dom_id featured_debate %>" class="debate-featured">
|
||||
<div class="panel">
|
||||
|
||||
@@ -26,3 +27,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<section role="main">
|
||||
<% cache [locale_and_user_status, @featured_debates, 'featured'] do %>
|
||||
<section role="main">
|
||||
<div class="filters row">
|
||||
<div class="small-12 column">
|
||||
<h2><%= t("welcome.last_debates") %></h2>
|
||||
@@ -7,4 +8,5 @@
|
||||
<div id="featured-debates" class="row">
|
||||
<%= render partial: "featured_debate", collection: @featured_debates %>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<% end %>
|
||||
|
||||
@@ -44,7 +44,7 @@ Rails.application.configure do
|
||||
# Raises error for missing translations
|
||||
# config.action_view.raise_on_missing_translations = true
|
||||
|
||||
config.cache_store = :null_store
|
||||
config.cache_store = :dalli_store
|
||||
|
||||
config.after_initialize do
|
||||
Bullet.enable = true
|
||||
|
||||
@@ -55,7 +55,7 @@ Rails.application.configure do
|
||||
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
||||
|
||||
# Use a different cache store in production.
|
||||
config.cache_store = :null_store
|
||||
config.cache_store = :dalli_store
|
||||
|
||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
||||
# config.action_controller.asset_host = 'http://assets.example.com'
|
||||
|
||||
@@ -55,7 +55,7 @@ Rails.application.configure do
|
||||
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
||||
|
||||
# Use a different cache store in production.
|
||||
config.cache_store = :null_store
|
||||
config.cache_store = :dalli_store
|
||||
|
||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
||||
# config.action_controller.asset_host = 'http://assets.example.com'
|
||||
|
||||
@@ -1 +1,8 @@
|
||||
ActsAsTaggableOn::Tagging.class_eval do
|
||||
after_destroy :touch_taggable
|
||||
|
||||
def touch_taggable
|
||||
taggable.touch
|
||||
end
|
||||
|
||||
end
|
||||
14
spec/lib/cache_spec.rb
Normal file
14
spec/lib/cache_spec.rb
Normal file
@@ -0,0 +1,14 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe 'Cache flow' do
|
||||
|
||||
describe 'Tag destroy' do
|
||||
it 'invalidates Debate cache keys' do
|
||||
debate = create(:debate, tag_list: "Good, Bad")
|
||||
tag = ActsAsTaggableOn::Tag.find_by(name: "Bad")
|
||||
|
||||
expect{tag.destroy}.to change {debate.reload.cache_key}
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user