diff --git a/app/models/impressionist/impressionable.rb b/app/models/impressionist/impressionable.rb index a6284f6..e4aeae3 100644 --- a/app/models/impressionist/impressionable.rb +++ b/app/models/impressionist/impressionable.rb @@ -1,10 +1,6 @@ module Impressionist module Impressionable - - def self.included(base) - base.extend ClassMethods - base.send(:include, InstanceMethods) - end + extend ActiveSupport::Concern module ClassMethods attr_accessor :cache_options @@ -28,44 +24,41 @@ module Impressionist end end - module InstanceMethods - def impressionable? - true - end - - def impressionist_count(options={}) - options.reverse_merge!(:filter=>:request_hash, :start_date=>nil, :end_date=>Time.now) - imps = options[:start_date].blank? ? impressions : impressions.where("created_at>=? and created_at<=?",options[:start_date],options[:end_date]) - if options[:filter]!=:all - imps = imps.select(options[:filter]).group(options[:filter]) - end - imps.all.size - end - - def update_counter_cache - cache_options = self.class.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) - end - - # OLD METHODS - DEPRECATE IN V0.5 - def impression_count(start_date=nil,end_date=Time.now) - impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=>:all}) - end - - def unique_impression_count(start_date=nil,end_date=Time.now) - impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=> :request_hash}) - end - - def unique_impression_count_ip(start_date=nil,end_date=Time.now) - impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=> :ip_address}) - end - - def unique_impression_count_session(start_date=nil,end_date=Time.now) - impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=> :session_hash}) - end + def impressionable? + true end + def impressionist_count(options={}) + options.reverse_merge!(:filter=>:request_hash, :start_date=>nil, :end_date=>Time.now) + imps = options[:start_date].blank? ? impressions : impressions.where("created_at>=? and created_at<=?",options[:start_date],options[:end_date]) + if options[:filter]!=:all + imps = imps.select(options[:filter]).group(options[:filter]) + end + imps.all.size + end + + def update_counter_cache + cache_options = self.class.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) + end + + # OLD METHODS - DEPRECATE IN V0.5 + def impression_count(start_date=nil,end_date=Time.now) + impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=>:all}) + end + + def unique_impression_count(start_date=nil,end_date=Time.now) + impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=> :request_hash}) + end + + def unique_impression_count_ip(start_date=nil,end_date=Time.now) + impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=> :ip_address}) + end + + def unique_impression_count_session(start_date=nil,end_date=Time.now) + impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=> :session_hash}) + end end end diff --git a/test_app/Gemfile b/test_app/Gemfile index 2c1ba22..6eb41ea 100644 --- a/test_app/Gemfile +++ b/test_app/Gemfile @@ -2,11 +2,9 @@ source 'https://rubygems.org' gem 'rails', '3.2.2' -# Bundle edge Rails instead: -# gem 'rails', :git => 'git://github.com/rails/rails.git' - gem 'impressionist', :path => '../' +gem 'pg' gem 'sqlite3' gem 'json'