From 0e7d75d1ecc313fc2fb5c2722eaa79f30d00d7a0 Mon Sep 17 00:00:00 2001 From: Tute Costa Date: Mon, 12 Mar 2012 18:10:25 -0300 Subject: [PATCH 1/3] Impressionable now extends ActiveSupport::Concern. Adds pg gem to test_app. --- app/models/impressionist/impressionable.rb | 77 ++++++++++------------ test_app/Gemfile | 4 +- 2 files changed, 36 insertions(+), 45 deletions(-) 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' From ecb95519ec82cc6af5322aca57ae42719b5164e5 Mon Sep 17 00:00:00 2001 From: Tute Costa Date: Mon, 12 Mar 2012 18:19:29 -0300 Subject: [PATCH 2/3] Impressionist generator now accepts --orm option (defaults to active_record). --- .../active_record/impressionist_generator.rb | 21 +++++++++++++++++++ .../templates/create_impressions_table.rb | 0 .../impressionist/impressionist_generator.rb | 20 ------------------ lib/generators/impressionist_generator.rb | 7 +++++++ 4 files changed, 28 insertions(+), 20 deletions(-) create mode 100644 lib/generators/active_record/impressionist_generator.rb rename lib/generators/{impressionist => active_record}/templates/create_impressions_table.rb (100%) delete mode 100644 lib/generators/impressionist/impressionist_generator.rb create mode 100644 lib/generators/impressionist_generator.rb diff --git a/lib/generators/active_record/impressionist_generator.rb b/lib/generators/active_record/impressionist_generator.rb new file mode 100644 index 0000000..31f4c1a --- /dev/null +++ b/lib/generators/active_record/impressionist_generator.rb @@ -0,0 +1,21 @@ +module ActiveRecord + module Generators + class ImpressionistGenerator < Rails::Generators::Base + include Rails::Generators::Migration + source_root File.join(File.dirname(__FILE__), 'templates') + + def self.next_migration_number(dirname) + sleep 1 + if ActiveRecord::Base.timestamped_migrations + Time.now.utc.strftime("%Y%m%d%H%M%S") + else + "%.3d" % (current_migration_number(dirname) + 1) + end + end + + def create_migration_file + migration_template 'create_impressions_table.rb', 'db/migrate/create_impressions_table.rb' + end + end + end +end diff --git a/lib/generators/impressionist/templates/create_impressions_table.rb b/lib/generators/active_record/templates/create_impressions_table.rb similarity index 100% rename from lib/generators/impressionist/templates/create_impressions_table.rb rename to lib/generators/active_record/templates/create_impressions_table.rb diff --git a/lib/generators/impressionist/impressionist_generator.rb b/lib/generators/impressionist/impressionist_generator.rb deleted file mode 100644 index 156f1a9..0000000 --- a/lib/generators/impressionist/impressionist_generator.rb +++ /dev/null @@ -1,20 +0,0 @@ -require 'rails/generators' -require 'rails/generators/migration' - -class ImpressionistGenerator < Rails::Generators::Base - include Rails::Generators::Migration - source_root File.join(File.dirname(__FILE__), 'templates') - - def self.next_migration_number(dirname) - sleep 1 - if ActiveRecord::Base.timestamped_migrations - Time.now.utc.strftime("%Y%m%d%H%M%S") - else - "%.3d" % (current_migration_number(dirname) + 1) - end - end - - def create_migration_file - migration_template 'create_impressions_table.rb', 'db/migrate/create_impressions_table.rb' - end -end diff --git a/lib/generators/impressionist_generator.rb b/lib/generators/impressionist_generator.rb new file mode 100644 index 0000000..69763b7 --- /dev/null +++ b/lib/generators/impressionist_generator.rb @@ -0,0 +1,7 @@ +module Impressionist + module Generators + class ImpressionistGenerator < Rails::Generators::Base + hook_for :orm + end + end +end From f9ad09a19a0698a82e012a0f92951654b5d0dfd5 Mon Sep 17 00:00:00 2001 From: Tute Costa Date: Mon, 12 Mar 2012 18:27:19 -0300 Subject: [PATCH 3/3] git ignoring unused Rails files. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 99e705b..685130c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,7 @@ /rdoc /test_app/db/schema.rb /test_app/db/migrate/*_create_impressions_table.rb +/test_app/doc +/test_app/test +/test_app/vendor Gemfile.lock