impressionist 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore CHANGED
@@ -1,5 +1,4 @@
1
1
  *~
2
- *.DS_Store
3
2
  /coverage
4
3
  /pkg
5
4
  /rdoc
data/.travis.yml CHANGED
@@ -2,10 +2,10 @@ before_install: gem install bundler
2
2
  before_script: "cd test_app && bundle install && ./script/rails generate impressionist && bundle exec rake db:migrate && cd .."
3
3
  language: ruby
4
4
  rvm:
5
+ - rbx-18mode
6
+ - rbx-19mode
7
+ - jruby-18mode
5
8
  - 1.8.7
6
9
  - 1.9.2
7
10
  - 1.9.3
8
- - jruby-18mode
9
- - jruby-19mode
10
- - rbx-18mode
11
- - rbx-19mode
11
+ - ruby-head
data/README.md CHANGED
@@ -57,7 +57,7 @@ The following fields are provided in the migration:
57
57
  t.string "referrer" # request.referer
58
58
  t.string "message" # custom message you can add
59
59
  t.datetime "created_at" # I am not sure what this is.... Any clue?
60
- t.datetime "updated_at" # never seen this one before either.... Your guess is as good as mine??
60
+ t.datetime "updated_at" # never seen this one before either.... Your guess is as good as mine?? ;-)
61
61
 
62
62
  Usage
63
63
  -----
data/Rakefile CHANGED
@@ -1,5 +1,3 @@
1
- #!/usr/bin/env rake
2
-
3
1
  require 'bundler/setup'
4
2
  require 'rspec/core/rake_task'
5
3
 
@@ -41,10 +41,7 @@ module ImpressionistController
41
41
  private
42
42
 
43
43
  def bypass
44
- Impressionist::Bots::WILD_CARDS.each do |wild_card|
45
- return true if request.user_agent and request.user_agent.downcase.include? wild_card
46
- end
47
- Impressionist::Bots::LIST.include? request.user_agent
44
+ Impressionist::Bots.bot?(request.user_agent)
48
45
  end
49
46
 
50
47
  def unique_instance?(impressionable, unique_opts)
@@ -1,3 +1,2 @@
1
1
  class Impression
2
- belongs_to :impressionable, :polymorphic=>true
3
2
  end
@@ -1,5 +1,11 @@
1
1
  module Impressionist
2
2
  module Bots
3
+
4
+ def self.bot?(user_agent = nil)
5
+ return false if user_agent.nil?
6
+ WILD_CARDS.any? { |wc| user_agent.downcase.include?(wc) } || LIST.include?(user_agent)
7
+ end
8
+
3
9
  WILD_CARDS = ["bot","yahoo","slurp","google","msn","crawler"]
4
10
 
5
11
  LIST = ["<a href='http://www.unchaos.com/'> UnChaos </a> From Chaos To Order Hybrid Web Search Engine.(vadim_gonchar@unchaos.com)",
@@ -3,19 +3,24 @@ module Impressionist
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  module ClassMethods
6
- attr_accessor :cache_options
7
- @cache_options = nil
6
+ attr_accessor :impressionist_cache_options
7
+ @impressionist_cache_options = nil
8
8
 
9
- def counter_cache_options
10
- if @cache_options
9
+ def impressionist_counter_cache_options
10
+ if @impressionist_cache_options
11
11
  options = { :column_name => :impressions_count, :unique => false }
12
- options.merge!(@cache_options) if @cache_options.is_a?(Hash)
12
+ options.merge!(@impressionist_cache_options) if @impressionist_cache_options.is_a?(Hash)
13
13
  options
14
14
  end
15
15
  end
16
16
 
17
+ def impressionist_counter_caching?
18
+ impressionist_counter_cache_options.present?
19
+ end
20
+
17
21
  def counter_caching?
18
- counter_cache_options.present?
22
+ ::ActiveSupport::Deprecation.warn("#counter_caching? is deprecated; please use #impressionist_counter_caching? instead")
23
+ impressionist_counter_caching?
19
24
  end
20
25
  end
21
26
 
@@ -26,17 +31,15 @@ module Impressionist
26
31
  def impressionist_count(options={})
27
32
  options.reverse_merge!(:filter=>:request_hash, :start_date=>nil, :end_date=>Time.now)
28
33
  imps = options[:start_date].blank? ? impressions : impressions.where("created_at>=? and created_at<=?",options[:start_date],options[:end_date])
29
- if options[:filter]!=:all
30
- imps = imps.select(options[:filter]).group(options[:filter])
31
- end
32
- imps.all.size
34
+ options[:filter] == :all ? imps.count : imps.count(options[:filter], :distinct => true)
33
35
  end
34
36
 
35
- def update_counter_cache
36
- cache_options = self.class.counter_cache_options
37
+ def update_impressionist_counter_cache
38
+ cache_options = self.class.impressionist_counter_cache_options
37
39
  column_name = cache_options[:column_name].to_sym
38
40
  count = cache_options[:unique] ? impressionist_count(:filter => :ip_address) : impressionist_count
39
- update_attribute(column_name, count)
41
+ old_count = send(column_name) || 0
42
+ self.class.update_counters(id, column_name => (count - old_count))
40
43
  end
41
44
 
42
45
  # OLD METHODS - DEPRECATE IN V0.5
@@ -14,6 +14,7 @@ class CreateImpressionsTable < ActiveRecord::Migration
14
14
  t.text :referrer
15
15
  t.timestamps
16
16
  end
17
+ add_index :impressions, [:impressionable_type, :message, :impressionable_id], :name => "impressionable_type_message_index", :unique => false
17
18
  add_index :impressions, [:impressionable_type, :impressionable_id, :request_hash], :name => "poly_request_index", :unique => false
18
19
  add_index :impressions, [:impressionable_type, :impressionable_id, :ip_address], :name => "poly_ip_index", :unique => false
19
20
  add_index :impressions, [:impressionable_type, :impressionable_id, :session_hash], :name => "poly_session_index", :unique => false
@@ -7,6 +7,7 @@ module Impressionist
7
7
  def copy_config_file
8
8
  template 'impression.rb', 'config/initializers/impression.rb'
9
9
  end
10
+
10
11
  end
11
12
  end
12
13
  end
@@ -0,0 +1,8 @@
1
+ module Mongoid
2
+ module Generators
3
+ class ImpressionistGenerator < Rails::Generators::Base
4
+ # Empty for now, need it for generating the config file without
5
+ # triggering other ORM's generators.
6
+ end
7
+ end
8
+ end
@@ -1,5 +1,5 @@
1
1
  # Use this hook to configure impressionist parameters
2
2
  Impressionist.setup do |config|
3
- # Define ORM. Could be :active_record (default) and :mongo_mapper
3
+ # Define ORM. Could be :active_record (default), :mongo_mapper or :mongoid
4
4
  # config.orm = :active_record
5
5
  end
@@ -0,0 +1,10 @@
1
+ ImpressionistController::InstanceMethods.send(:define_method, :direct_create_statement) do |query_params={}|
2
+ # creates a statment hash that contains default values for creating an impression.
3
+ # if :impressionable_id is a valid ObjectId then convert it into one
4
+ base = (defined? Moped) ? Moped::BSON : BSON
5
+ query_params.reverse_merge!(
6
+ :impressionable_type => controller_name.singularize.camelize,
7
+ :impressionable_id=> !base::ObjectId.legal?(params[:id]) ? params[:id] : base::ObjectId.from_string(params[:id])
8
+ )
9
+ associative_create_statement(query_params)
10
+ end
@@ -5,7 +5,7 @@ module Impressionist
5
5
  class Engine < Rails::Engine
6
6
  initializer 'impressionist.model' do |app|
7
7
  require "#{root}/app/models/impressionist/impressionable.rb"
8
- if Impressionist.orm == :active_record
8
+ if Impressionist.orm == :active_record && defined? ActiveRecord
9
9
  require "impressionist/models/active_record/impression.rb"
10
10
  require "impressionist/models/active_record/impressionist/impressionable.rb"
11
11
  ActiveRecord::Base.send(:include, Impressionist::Impressionable)
@@ -13,10 +13,17 @@ module Impressionist
13
13
  require "impressionist/models/mongo_mapper/impression.rb"
14
14
  require "impressionist/models/mongo_mapper/impressionist/impressionable.rb"
15
15
  MongoMapper::Document.plugin Impressionist::Impressionable
16
+ elsif Impressionist.orm == :mongoid
17
+ require 'impressionist/models/mongoid/impression.rb'
18
+ require 'impressionist/models/mongoid/impressionist/impressionable.rb'
19
+ Mongoid::Document.send(:include, Impressionist::Impressionable)
16
20
  end
17
21
  end
18
22
 
19
23
  initializer 'impressionist.controller' do
24
+ if Impressionist.orm == :mongoid
25
+ require 'impressionist/controllers/mongoid/impressionist_controller.rb'
26
+ end
20
27
  ActiveSupport.on_load(:action_controller) do
21
28
  include ImpressionistController::InstanceMethods
22
29
  extend ImpressionistController::ClassMethods
@@ -3,6 +3,8 @@ class Impression < ActiveRecord::Base
3
3
  :controller_name, :action_name, :view_name, :request_hash, :ip_address,
4
4
  :session_hash, :message, :referrer
5
5
 
6
+ belongs_to :impressionable, :polymorphic=>true
7
+
6
8
  after_save :update_impressions_counter_cache
7
9
 
8
10
  private
@@ -10,9 +12,9 @@ class Impression < ActiveRecord::Base
10
12
  def update_impressions_counter_cache
11
13
  impressionable_class = self.impressionable_type.constantize
12
14
 
13
- if impressionable_class.counter_cache_options
15
+ if impressionable_class.impressionist_counter_cache_options
14
16
  resouce = impressionable_class.find(self.impressionable_id)
15
- resouce.try(:update_counter_cache)
17
+ resouce.try(:update_impressionist_counter_cache)
16
18
  end
17
19
  end
18
20
  end
@@ -5,7 +5,7 @@ module Impressionist
5
5
  module ClassMethods
6
6
  def is_impressionable(options={})
7
7
  has_many :impressions, :as => :impressionable, :dependent => :destroy
8
- @cache_options = options[:counter_cache]
8
+ @impressionist_cache_options = options[:counter_cache]
9
9
  end
10
10
  end
11
11
  end
@@ -13,4 +13,6 @@ class Impression
13
13
  key :message, String
14
14
  key :referrer, String
15
15
  timestamps!
16
+
17
+ belongs_to :impressionable, :polymorphic=>true
16
18
  end
@@ -0,0 +1,32 @@
1
+ class Impression
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+
5
+ attr_accessible :impressionable_type, :impressionable_field, :impressionable_id, :user_id,
6
+ :controller_name, :action_name, :view_name, :request_hash, :ip_address,
7
+ :session_hash, :message, :referrer
8
+
9
+ belongs_to :impressionable, polymorphic: true
10
+
11
+ field :user_id
12
+ field :controller_name
13
+ field :action_name
14
+ field :view_name
15
+ field :request_hash
16
+ field :ip_address
17
+ field :session_hash
18
+ field :message
19
+ field :referrer
20
+
21
+ set_callback(:create, :after) do |doc|
22
+ unless impressionable_id.nil?
23
+ impressionable_class = doc.impressionable_type.constantize
24
+
25
+ if impressionable_class.impressionist_counter_cache_options
26
+ resource = impressionable_class.find(doc.impressionable_id)
27
+ resource.try(:update_impressionist_counter_cache)
28
+ end
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,52 @@
1
+ module Impressionist
2
+ module Impressionable
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ def is_impressionable(options={})
7
+ has_many :impressions, as: :impressionable, dependent: :destroy
8
+ @impressionist_cache_options = options[:counter_cache]
9
+ if !@impressionist_cache_options.nil?
10
+ opts = impressionist_counter_cache_options
11
+ field opts[:column_name], type: Integer
12
+ end
13
+ end
14
+
15
+ def impressionist_counter_cache_options
16
+ if @impressionist_cache_options
17
+ options = { :column_name => :impressions_count, :unique => false }
18
+ options.merge!(@impressionist_cache_options) if @impressionist_cache_options.is_a?(Hash)
19
+ options
20
+ end
21
+ end
22
+
23
+ def impressionist_counter_caching?
24
+ impressionist_counter_cache_options.present?
25
+ end
26
+
27
+ def counter_caching?
28
+ ::ActiveSupport::Deprecation.warn("#counter_caching? is deprecated; please use #impressionist_counter_caching? instead")
29
+ impressionist_counter_caching?
30
+ end
31
+ end
32
+
33
+ def impressionable?
34
+ true
35
+ end
36
+
37
+ def impressionist_count(options={})
38
+ options.reverse_merge!(:filter=>:request_hash, :start_date=>nil, :end_date=>Time.now)
39
+ imps = options[:start_date].blank? ? impressions : impressions.between(created_at: options[:start_date]..options[:end_date])
40
+ options[:filter] == :all ? imps.count : imps.where(options[:filter].ne => nil).count
41
+ end
42
+
43
+ def update_impressionist_counter_cache
44
+ cache_options = self.class.impressionist_counter_cache_options
45
+ column_name = cache_options[:column_name].to_sym
46
+ count = cache_options[:unique] ? impressionist_count(:filter => :ip_address) : impressionist_count
47
+ old_count = send(column_name) || 0
48
+ self.inc(column_name, (count - old_count))
49
+ end
50
+
51
+ end
52
+ end
@@ -1,3 +1,3 @@
1
1
  module Impressionist
2
- VERSION = "1.1.1"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Impressionist::Bots do
4
+
5
+ describe "self.bot?" do
6
+ it "is true if user_agent is matches wild card" do
7
+ Impressionist::Bots.bot?("google.com bot").should be_true
8
+ end
9
+
10
+ it "is true if user_agent is on bot list" do
11
+ Impressionist::Bots.bot?("A-Online Search").should be_true
12
+ end
13
+
14
+ it "is false if user_agent is blank" do
15
+ Impressionist::Bots.bot?("").should be_false
16
+ Impressionist::Bots.bot?(nil).should be_false
17
+ end
18
+
19
+ it "is false if user_agent is safe" do
20
+ Impressionist::Bots.bot?('127.0.0.1').should be_false
21
+ end
22
+
23
+ it "is false if user_agent not given" do
24
+ Impressionist::Bots.bot?.should be_false
25
+ end
26
+ end
27
+ end
@@ -8,23 +8,43 @@ describe Impression do
8
8
  Impression.destroy_all
9
9
  end
10
10
 
11
+ describe "self#impressionist_counter_caching?" do
12
+ it "should know when counter caching is enabled" do
13
+ Widget.should be_impressionist_counter_caching
14
+ end
15
+
16
+ it "should know when counter caching is disabled" do
17
+ Article.should_not be_impressionist_counter_caching
18
+ end
19
+ end
20
+
11
21
  describe "self#counter_caching?" do
12
22
  it "should know when counter caching is enabled" do
23
+ ActiveSupport::Deprecation.should_receive(:warn)
13
24
  Widget.should be_counter_caching
14
25
  end
15
26
 
16
27
  it "should know when counter caching is disabled" do
28
+ ActiveSupport::Deprecation.should_receive(:warn)
17
29
  Article.should_not be_counter_caching
18
30
  end
31
+
19
32
  end
20
33
 
21
- describe "#update_counter_cache" do
34
+ describe "#update_impressionist_counter_cache" do
22
35
  it "should update the counter cache column to reflect the correct number of impressions" do
23
36
  lambda {
24
- Impression.create(:impressionable_type => @widget.class.name, :impressionable_id => @widget.id)
37
+ @widget.impressions.create(:request_hash => 'abcd1234')
25
38
  @widget.reload
26
39
  }.should change(@widget, :impressions_count).from(0).to(1)
27
40
  end
41
+
42
+ it "should not update the timestamp on the impressable" do
43
+ lambda {
44
+ @widget.impressions.create(:request_hash => 'abcd1234')
45
+ @widget.reload
46
+ }.should_not change(@widget, :updated_at)
47
+ end
28
48
  end
29
49
 
30
50
  end
@@ -0,0 +1,9 @@
1
+ class Version04UpdateImpressionsTable < ActiveRecord::Migration
2
+ def self.up
3
+ add_index :impressions, [:impressionable_type, :message, :impressionable_id], :name => "impressionable_type_message_index", :unique => false
4
+ end
5
+
6
+ def self.down
7
+ remove_index :impressions, :impressionable_type_message_index
8
+ end
9
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: impressionist
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-15 00:00:00.000000000 Z
12
+ date: 2013-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httpclient
16
- requirement: &70331801224520 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '2.2'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70331801224520
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '2.2'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: nokogiri
27
- requirement: &70331801251100 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '1.5'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70331801251100
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.5'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: capybara
38
- requirement: &70331801250700 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70331801250700
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: rake
49
- requirement: &70331801250120 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0.9'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70331801250120
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0.9'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: rails
60
- requirement: &70331801249480 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ~>
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '3.1'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *70331801249480
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '3.1'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: rdoc
71
- requirement: &70331801248900 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: 2.4.2
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *70331801248900
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: 2.4.2
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: rspec-rails
82
- requirement: &70331801248260 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *70331801248260
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: simplecov
93
- requirement: &70331801247420 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
@@ -98,10 +133,15 @@ dependencies:
98
133
  version: '0'
99
134
  type: :development
100
135
  prerelease: false
101
- version_requirements: *70331801247420
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
102
142
  - !ruby/object:Gem::Dependency
103
143
  name: sqlite3
104
- requirement: &70331801246980 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
105
145
  none: false
106
146
  requirements:
107
147
  - - ! '>='
@@ -109,10 +149,15 @@ dependencies:
109
149
  version: '0'
110
150
  type: :development
111
151
  prerelease: false
112
- version_requirements: *70331801246980
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
113
158
  - !ruby/object:Gem::Dependency
114
159
  name: systemu
115
- requirement: &70331801246480 !ruby/object:Gem::Requirement
160
+ requirement: !ruby/object:Gem::Requirement
116
161
  none: false
117
162
  requirements:
118
163
  - - ! '>='
@@ -120,7 +165,12 @@ dependencies:
120
165
  version: '0'
121
166
  type: :development
122
167
  prerelease: false
123
- version_requirements: *70331801246480
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
124
174
  description: Log impressions from controller actions or from a model
125
175
  email: john.mcaliley@gmail.com
126
176
  executables: []
@@ -144,14 +194,18 @@ files:
144
194
  - lib/generators/active_record/templates/create_impressions_table.rb
145
195
  - lib/generators/impressionist_generator.rb
146
196
  - lib/generators/mongo_mapper/impressionist_generator.rb
197
+ - lib/generators/mongoid/impressionist_generator.rb
147
198
  - lib/generators/templates/impression.rb
148
199
  - lib/impressionist.rb
149
200
  - lib/impressionist/bots.rb
201
+ - lib/impressionist/controllers/mongoid/impressionist_controller.rb
150
202
  - lib/impressionist/engine.rb
151
203
  - lib/impressionist/models/active_record/impression.rb
152
204
  - lib/impressionist/models/active_record/impressionist/impressionable.rb
153
205
  - lib/impressionist/models/mongo_mapper/impression.rb
154
206
  - lib/impressionist/models/mongo_mapper/impressionist/impressionable.rb
207
+ - lib/impressionist/models/mongoid/impression.rb
208
+ - lib/impressionist/models/mongoid/impressionist/impressionable.rb
155
209
  - lib/impressionist/version.rb
156
210
  - logo.png
157
211
  - test_app/.gitignore
@@ -234,13 +288,15 @@ files:
234
288
  - test_app/spec/fixtures/impressions.yml
235
289
  - test_app/spec/fixtures/posts.yml
236
290
  - test_app/spec/fixtures/widgets.yml
237
- - test_app/spec/intializers/initializers_spec.rb
291
+ - test_app/spec/initializers/initializers_spec.rb
292
+ - test_app/spec/models/bots_spec.rb
238
293
  - test_app/spec/models/counter_caching_spec.rb
239
294
  - test_app/spec/models/model_spec.rb
240
295
  - test_app/spec/rails_generators/rails_generators_spec.rb
241
296
  - test_app/spec/spec_helper.rb
242
297
  - upgrade_migrations/version_0_3_0.rb
243
298
  - upgrade_migrations/version_0_4_0.rb
299
+ - upgrade_migrations/version_1_1_2.rb
244
300
  homepage: https://github.com/charlotte-ruby/impressionist
245
301
  licenses:
246
302
  - MIT
@@ -256,7 +312,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
256
312
  version: '0'
257
313
  segments:
258
314
  - 0
259
- hash: 4375478924992886523
315
+ hash: 2760039112118904693
260
316
  required_rubygems_version: !ruby/object:Gem::Requirement
261
317
  none: false
262
318
  requirements:
@@ -265,7 +321,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
321
  version: 1.3.6
266
322
  requirements: []
267
323
  rubyforge_project:
268
- rubygems_version: 1.8.11
324
+ rubygems_version: 1.8.24
269
325
  signing_key:
270
326
  specification_version: 3
271
327
  summary: Easy way to log impressions
@@ -348,7 +404,8 @@ test_files:
348
404
  - test_app/spec/fixtures/impressions.yml
349
405
  - test_app/spec/fixtures/posts.yml
350
406
  - test_app/spec/fixtures/widgets.yml
351
- - test_app/spec/intializers/initializers_spec.rb
407
+ - test_app/spec/initializers/initializers_spec.rb
408
+ - test_app/spec/models/bots_spec.rb
352
409
  - test_app/spec/models/counter_caching_spec.rb
353
410
  - test_app/spec/models/model_spec.rb
354
411
  - test_app/spec/rails_generators/rails_generators_spec.rb