Skip to content

Commit

Permalink
added cacheing
Browse files Browse the repository at this point in the history
  • Loading branch information
greggroth committed Nov 1, 2011
1 parent be94b2f commit 8512605
Show file tree
Hide file tree
Showing 21 changed files with 78 additions and 50 deletions.
1 change: 1 addition & 0 deletions Gemfile
Expand Up @@ -23,6 +23,7 @@ gem 'airbrake'
gem 'paperclip', "~> 2.4"
gem "rmagick", :require => 'RMagick'
gem "aws-s3"
gem 'dalli'

group :test, :development do
gem 'rspec-rails'
Expand Down
2 changes: 2 additions & 0 deletions Gemfile.lock
Expand Up @@ -61,6 +61,7 @@ GEM
execjs
coffee-script-source (1.1.2)
crack (0.3.1)
dalli (1.1.3)
devise (1.4.9)
bcrypt-ruby (~> 3.0)
orm_adapter (~> 0.0.3)
Expand Down Expand Up @@ -205,6 +206,7 @@ DEPENDENCIES
capybara
coffee-rails (~> 3.1.0)
coffee-script
dalli
devise
factory_girl_rails
forgery (~> 0.5.0)
Expand Down
4 changes: 4 additions & 0 deletions app/assets/javascripts/beer_items.js.coffee
@@ -0,0 +1,4 @@
$(document).ready ->
$('div#new-beer-from-beer-item').hide()
$('select#beer_item_beer_id').prepend('<option value="new">New Beer</option>').change ->
$('div#new-beer-from-beer-item').toggle()
5 changes: 0 additions & 5 deletions app/assets/javascripts/script.coffee
Expand Up @@ -4,11 +4,6 @@ window.Application ||= {}
$(document).ready ->
Application.format_normal_itemlist('.itemlist')

$('div#new-beer-from-beer-item').hide()
$('select#beer_item_beer_id').prepend('<option value="new">New Beer</option>').change ->
$('div#new-beer-from-beer-item').toggle()


### Generate Charts for /bar_owner ###
$('div.chart').each ->
$.jqplot($(this).attr('id'), [$(this).metadata().chartdata], {
Expand Down
16 changes: 10 additions & 6 deletions app/controllers/bars_controller.rb
Expand Up @@ -9,17 +9,19 @@ def index
@bars = Bar.search_tank(params[:search])
else
if iphone_request?
@bars = Bar.includes(:beers).order("name ASC")
@bars = Bar.includes(:beer_items).order("name ASC")
else
@bars = Bar.page(params[:page]).per(25)
@bars = Bar.includes(:beer_items).page(params[:page]).per(25)
end
end

if user_signed_in?
@user_bars = current_user.bars.find(:all)
# @user_followings = BarFollowing.where(user_id: current_user.id).includes(:bar => [ :beers ])
@user_bars = BarFollowing.where(user_id: current_user.id).includes(:bar => [ :beer_items ]).map { |follow| follow.bar }
else
# @user_followings = []
@user_bars = []
end
end
end

def show
Expand Down Expand Up @@ -48,8 +50,10 @@ def show
@recent_beer_items = @beer_items.select { |i| i.updated_at > 1.week.ago }
@specials = @beer_items.select { |i| (0..6).member?(i.weekday) }.group_by { |i| i.weekday }
@beer_items.delete_if { |i| (0..6).include? i.weekday }
@had_beers = current_user.had_beers if user_signed_in?
@beer_tracks = current_user.beer_tracks if user_signed_in?
if user_signed_in?
@had_beers = current_user.had_beers
@beer_tracks = current_user.beer_tracks
end

if @bar.latitude.present? && @bar.longitude.present?
@json = @bar.to_gmaps4rails
Expand Down
13 changes: 7 additions & 6 deletions app/controllers/beer_items_controller.rb
Expand Up @@ -3,16 +3,17 @@ class BeerItemsController < ApplicationController
before_filter :authenticate_user!, :except => [:index, :show]



def index
# BeerItem.where(weekday: Time.now.wday).includes([:beer, :bar])

@todays_deals = BeerItem.find(:all, :include => [:beer, :bar], :conditions => ["weekday = ?", Time.now.wday])
# @todays_deals = BeerItem.find(:all, :include => [:beer, :bar], :conditions => ["weekday = ?", Time.now.wday])

unless params[:search_by_pouring].nil?
@best_deals = BeerItem.find(:all, :include => [:beer,:bar], :conditions => ["pouring = ?", params[:search_by_pouring]], :order => [sort_column + " " + sort_direction], :limit => 50)
else
@best_deals = BeerItem.top_deals
end
# unless params[:search_by_pouring].nil?
# @best_deals = BeerItem.find(:all, :include => [:beer,:bar], :conditions => ["pouring = ?", params[:search_by_pouring]], :order => [sort_column + " " + sort_direction], :limit => 50)
# else
# @best_deals = BeerItem.top_deals
# end
end


Expand Down
16 changes: 9 additions & 7 deletions app/controllers/beers_controller.rb
Expand Up @@ -2,22 +2,24 @@ class BeersController < ApplicationController
helper_method :sort_column, :sort_direction
before_filter :authenticate_user!, :except => [:index, :show]

# GET /beers
# GET /beers.xml
def index
if params[:search].present?
@beers = Beer.includes(:beer_style,:brewery).search_tank(params[:search])
@beers = Beer.includes(:beer_style, :brewery, :beer_items).search_tank(params[:search])
else
if iphone_request?
@beers = Beer.includes(:beer_style, :brewery).order('name ASC')
@beers = Beer.includes(:beer_style, :brewery, :beer_items).order('name ASC')
else
@beers = Beer.includes(:beer_style,:brewery).order('name ASC').page(params[:page]).per(25)
@beers = Beer.includes(:beer_style,:brewery, :beer_items).order('name ASC').page(params[:page]).per(25)
end
end

if user_signed_in?
@user_beers = current_user.had_beers
else
@user_beers = []
end
end

# GET /beers/1
# GET /beers/1.xml
def show
@beer = Beer.find(params[:id])

Expand Down
6 changes: 5 additions & 1 deletion app/models/beer_item.rb
Expand Up @@ -7,7 +7,7 @@ class BeerItem < ActiveRecord::Base
validates :beer_id, :uniqueness => { :scope => [:bar_id, :volume, :volunit, :pouring], :message => "and bar combination already exists." }

belongs_to :bar
belongs_to :beer, :include => [:beer_style, :ratings, :beer_tracks]
belongs_to :beer
belongs_to :user
belongs_to :brewery

Expand Down Expand Up @@ -95,4 +95,8 @@ def self.top_deals

return results
end

def self.todays_deals
self.where("weekday = ?", Time.now.wday).includes(:beer, :bar)
end
end
4 changes: 2 additions & 2 deletions app/views/bars/_list_of_bars.html.slim
Expand Up @@ -12,7 +12,7 @@ table id="expanding_followed_bars_list" class="expandable_itemlist"
td
div class="follow_form"
- if user_signed_in?
- if f.is_followed? current_user
- if @user_bars.include?(f)
= form_for current_user.bar_followings.find_by_bar_id(f.id), :html => { :method => :delete }, :remote => true do |h|
div class="following"
= image_submit_tag "full_circle.png"
Expand All @@ -25,7 +25,7 @@ table id="expanding_followed_bars_list" class="expandable_itemlist"
td = link_to f.name, f
td = f.address
td = f.zip
td = f.beers.count
td = f.beer_items.count
tr
td colspan="6" id="itemdesc-following-#{f.id}" class="itemdesc"
div
2 changes: 1 addition & 1 deletion app/views/beer_items/_best_deals.html.slim
Expand Up @@ -8,7 +8,7 @@ table id="sorted_beer_item_list" class="itemlist"
th width=100 class="abd-table-heading" ABD
th width=80 Price
tbody
- for deal in @best_deals do
- for deal in BeerItem.best_deals do
tr
td = link_to(deal.beer.name, deal.beer)
td = link_to(deal.bar.name, deal.bar)
Expand Down
4 changes: 4 additions & 0 deletions app/views/beer_items/_form.html.slim
@@ -1,3 +1,7 @@
/ - content_for :head do
/ = javascript_include_tag "beer_items.js.js"
= form_for(@beer_item, :html => { :class => "bigform" }) do |f|
- if @beer_item.errors.any?
div id="error_explanation"
Expand Down
2 changes: 1 addition & 1 deletion app/views/beer_items/_todays_specials.html.slim
Expand Up @@ -8,7 +8,7 @@ table id="sorted_beer_item_list" class="itemlist"
th width=100 class="abd-table-heading" ABD
th width=80 Price
tbody
- for deal in @todays_deals do
- for deal in BeerItem.todays_deals do
tr
td = link_to(deal.beer.name, deal.beer)
td = link_to(deal.bar.name, deal.bar)
Expand Down
16 changes: 9 additions & 7 deletions app/views/beer_items/index.html.slim
Expand Up @@ -10,13 +10,15 @@ div id="main-page-intro-text"
| Bars are constantly being added, so check back if you don&#146;t see what you&#146;re looking for. If you&#146;d like to hear about our updates, #{{link_to "follow us on twitter", "http://twitter.com/#!/atlbeerlist", :target => "_blank"}}.

div id="best-deals-table-wrapper"
- unless @todays_deals.empty?
h2 Good deals happening on #{ Time.now.strftime("%A").pluralize }
br
div id="todays_specials"
= render "todays_specials"
- cache "todays_deals", :expires_in => 6.hours do
- unless BeerItem.todays_deals.empty?
h2 Good deals happening on #{ Time.now.strftime("%A").pluralize }
br
div id="todays_specials"
= render "todays_specials"
br
h2 Top 20 Best Deals
br
div id="best_deals"
= render "best_deals"
- cache "best_deals", :expires_in => 1.hour do
div id="best_deals"
= render "best_deals"
2 changes: 1 addition & 1 deletion app/views/beers/_beers_list.html.slim
Expand Up @@ -18,5 +18,5 @@ div
td = link_to beer.name, beer
td = link_to beer.brewery.name, beer.brewery
td = beer.try(:beer_style) ? beer.beer_style.name : nil
td = pluralize(beer.bars.count,"bar")
td = pluralize(beer.beer_items.count, "bar")
/ = image_tag "ajax-loader.gif", :id => "beers-loading-animation"
2 changes: 1 addition & 1 deletion app/views/beers/_track_it.html.slim
@@ -1,5 +1,5 @@
- if user_signed_in?
- if current_user.has_drunk?(beer)
- if @user_beers.include? beer
= form_for current_user.beer_tracks.find_by_beer_id(beer.id), :html => { :method => :delete, :id => "beer_tracks_#{beer.id}" }, :remote => true do |h|
div class="beer_tracking"
= hidden_field_tag "from", "beers_index"
Expand Down
9 changes: 5 additions & 4 deletions app/views/layouts/_user_stats.html.slim
@@ -1,4 +1,5 @@
= link_to current_user.beer_items.count, new_beer_item_path, { :id => "beer-item-count", :title => "Add a new menu listing" }
| &nbsp;|
span id="beer-count"
= current_user.had_beers.count
- cache 'user_stats' do
= link_to current_user.beer_items.count, new_beer_item_path, { :id => "beer-item-count", :title => "Add a new menu listing" }
| &nbsp;|
span id="beer-count"
= current_user.had_beers.count
2 changes: 1 addition & 1 deletion config/environments/development.rb
Expand Up @@ -12,7 +12,7 @@
# Show full error reports and disable caching
config.consider_all_requests_local = true
# config.action_view.debug_rjs = true
config.action_controller.perform_caching = false
config.action_controller.perform_caching = true

# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
Expand Down
2 changes: 1 addition & 1 deletion config/environments/production.rb
Expand Up @@ -25,7 +25,7 @@
# config.logger = SyslogLogger.new

# Use a different cache store in production
# config.cache_store = :mem_cache_store
config.cache_store = :dalli_store

# Disable Rails's static asset server
# In production, Apache or nginx will already do this
Expand Down
12 changes: 12 additions & 0 deletions public/javascripts/beer_items.js.js
@@ -0,0 +1,12 @@
/* DO NOT MODIFY. This file was compiled Tue, 01 Nov 2011 19:20:24 GMT from
* /Users/Greggory/Programing/beerlist/app/assets/javascripts/beer_items.js.coffee
*/

(function() {
$(document).ready(function() {
$('div#new-beer-from-beer-item').hide();
return $('select#beer_item_beer_id').prepend('<option value="new">New Beer</option>').change(function() {
return $('div#new-beer-from-beer-item').toggle();
});
});
}).call(this);
2 changes: 1 addition & 1 deletion public/javascripts/rating_ballot.js
@@ -1,4 +1,4 @@
/* DO NOT MODIFY. This file was compiled Fri, 21 Oct 2011 18:05:34 GMT from
/* DO NOT MODIFY. This file was compiled Tue, 01 Nov 2011 19:15:54 GMT from
* /Users/Greggory/Programing/beerlist/app/assets/javascripts/rating_ballot.coffee
*/

Expand Down
6 changes: 1 addition & 5 deletions public/javascripts/script.js
@@ -1,4 +1,4 @@
/* DO NOT MODIFY. This file was compiled Fri, 28 Oct 2011 19:37:25 GMT from
/* DO NOT MODIFY. This file was compiled Tue, 01 Nov 2011 19:19:47 GMT from
* /Users/Greggory/Programing/beerlist/app/assets/javascripts/script.coffee
*/

Expand All @@ -8,10 +8,6 @@
$(document).ready(function() {
var reformat_profile_beer_items_container;
Application.format_normal_itemlist('.itemlist');
$('div#new-beer-from-beer-item').hide();
$('select#beer_item_beer_id').prepend('<option value="new">New Beer</option>').change(function() {
return $('div#new-beer-from-beer-item').toggle();
});
/* Generate Charts for /bar_owner */
$('div.chart').each(function() {
return $.jqplot($(this).attr('id'), [$(this).metadata().chartdata], {
Expand Down

0 comments on commit 8512605

Please sign in to comment.