impressionist 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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