diff --git a/app/models/impressionist/impressionable.rb b/app/models/impressionist/impressionable.rb index 30174e0..4b29824 100644 --- a/app/models/impressionist/impressionable.rb +++ b/app/models/impressionist/impressionable.rb @@ -3,19 +3,24 @@ module Impressionist extend ActiveSupport::Concern module ClassMethods - attr_accessor :cache_options - @cache_options = nil + attr_accessor :impressionist_cache_options + @impressionist_cache_options = nil - def counter_cache_options - if @cache_options + def impressionist_counter_cache_options + if @impressionist_cache_options options = { :column_name => :impressions_count, :unique => false } - options.merge!(@cache_options) if @cache_options.is_a?(Hash) + options.merge!(@impressionist_cache_options) if @impressionist_cache_options.is_a?(Hash) options end end + def impressionist_counter_caching? + impressionist_counter_cache_options.present? + end + def counter_caching? - counter_cache_options.present? + ::ActiveSupport::Deprecation.warn("#counter_caching? is deprecated; please use #impressionist_counter_caching? instead") + impressionist_counter_caching? end end @@ -29,8 +34,8 @@ module Impressionist options[:filter] == :all ? imps.count : imps.count(options[:filter], :distinct => true) end - def update_counter_cache - cache_options = self.class.counter_cache_options + def update_impressionist_counter_cache + cache_options = self.class.impressionist_counter_cache_options column_name = cache_options[:column_name].to_sym count = cache_options[:unique] ? impressionist_count(:filter => :ip_address) : impressionist_count update_attribute(column_name, count) diff --git a/lib/impressionist/models/active_record/impression.rb b/lib/impressionist/models/active_record/impression.rb index 4d13373..94c2710 100644 --- a/lib/impressionist/models/active_record/impression.rb +++ b/lib/impressionist/models/active_record/impression.rb @@ -10,9 +10,9 @@ class Impression < ActiveRecord::Base def update_impressions_counter_cache impressionable_class = self.impressionable_type.constantize - if impressionable_class.counter_cache_options + if impressionable_class.impressionist_counter_cache_options resouce = impressionable_class.find(self.impressionable_id) - resouce.try(:update_counter_cache) + resouce.try(:update_impressionist_counter_cache) end end end diff --git a/lib/impressionist/models/active_record/impressionist/impressionable.rb b/lib/impressionist/models/active_record/impressionist/impressionable.rb index d9339fb..6100b88 100644 --- a/lib/impressionist/models/active_record/impressionist/impressionable.rb +++ b/lib/impressionist/models/active_record/impressionist/impressionable.rb @@ -5,7 +5,7 @@ module Impressionist module ClassMethods def is_impressionable(options={}) has_many :impressions, :as => :impressionable, :dependent => :destroy - @cache_options = options[:counter_cache] + @impressionist_cache_options = options[:counter_cache] end end end diff --git a/test_app/spec/intializers/initializers_spec.rb b/test_app/spec/initializers/initializers_spec.rb similarity index 100% rename from test_app/spec/intializers/initializers_spec.rb rename to test_app/spec/initializers/initializers_spec.rb diff --git a/test_app/spec/models/counter_caching_spec.rb b/test_app/spec/models/counter_caching_spec.rb index ba4f5f9..552bf64 100644 --- a/test_app/spec/models/counter_caching_spec.rb +++ b/test_app/spec/models/counter_caching_spec.rb @@ -8,17 +8,30 @@ describe Impression do Impression.destroy_all end + describe "self#impressionist_counter_caching?" do + it "should know when counter caching is enabled" do + Widget.should be_impressionist_counter_caching + end + + it "should know when counter caching is disabled" do + Article.should_not be_impressionist_counter_caching + end + end + describe "self#counter_caching?" do it "should know when counter caching is enabled" do + ActiveSupport::Deprecation.should_receive(:warn) Widget.should be_counter_caching end it "should know when counter caching is disabled" do + ActiveSupport::Deprecation.should_receive(:warn) Article.should_not be_counter_caching end + end - describe "#update_counter_cache" do + describe "#update_impressionist_counter_cache" do it "should update the counter cache column to reflect the correct number of impressions" do lambda { @widget.impressions.create(:request_hash => 'abcd1234')