trackoid 0.3.7 → 0.3.8

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/Gemfile CHANGED
@@ -6,5 +6,5 @@ group :development do
6
6
  gem 'rake'
7
7
  gem 'jeweler'
8
8
  gem 'rspec', '>= 2.2.0'
9
- gem 'mocha'
9
+ gem 'mocha', '0.11.0'
10
10
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.7
1
+ 0.3.8
@@ -2,9 +2,9 @@
2
2
  module Mongoid #:nodoc:
3
3
  module Tracking #:nodoc:
4
4
  module Aggregates
5
-
5
+
6
6
  DEPRECATED_TOKENS = ['hour', 'hours']
7
-
7
+
8
8
  # This module includes aggregate data extensions to Trackoid instances
9
9
  def self.included(base)
10
10
  base.class_eval do
@@ -21,7 +21,7 @@ module Mongoid #:nodoc:
21
21
  module ClassMethods
22
22
  # Defines an aggregate token to an already tracked model. It defines
23
23
  # a new mongoid model named after the original model.
24
- #
24
+ #
25
25
  # Example:
26
26
  #
27
27
  # <tt>class Page</tt>
@@ -36,7 +36,7 @@ module Mongoid #:nodoc:
36
36
  # A new model is defined as <tt>class PageAggregates</tt>
37
37
  #
38
38
  # This model has the following structure:
39
- #
39
+ #
40
40
  # <tt>belongs_to :page</tt>
41
41
  # <tt>field :ns, :type => String</tt>
42
42
  # <tt>field :key, :type => String</tt>
@@ -132,7 +132,7 @@ module Mongoid #:nodoc:
132
132
  def define_klass(&block)
133
133
  scope = internal_aggregates_name.split('::')
134
134
  klass = scope.pop
135
- scope = scope.inject(Kernel) {|scope, const_name| scope.const_get(const_name)}
135
+ scope = scope.inject(Object) {|scope, const_name| scope.const_get(const_name)}
136
136
  klass = scope.const_set(klass, Class.new)
137
137
  klass.class_eval(&block)
138
138
  end
@@ -152,7 +152,7 @@ module Mongoid #:nodoc:
152
152
  end
153
153
  end
154
154
  end
155
-
155
+
156
156
  end
157
157
  end
158
158
  end
@@ -7,8 +7,10 @@ module Mongoid #:nodoc:
7
7
  # field named after :field
8
8
  def self.included(base)
9
9
  base.class_eval do
10
- raise Errors::NotMongoid, "Must be included in a Mongoid::Document" unless self.ancestors.include? Mongoid::Document
11
-
10
+ unless self.ancestors.include? Mongoid::Document
11
+ raise Errors::NotMongoid, "Must be included in a Mongoid::Document"
12
+ end
13
+
12
14
  include Aggregates
13
15
  extend ClassMethods
14
16
 
@@ -7,7 +7,7 @@ class TestModel
7
7
  field :name # Dummy field
8
8
 
9
9
  # Note that references to "track" and "aggregate" in this test are mixed
10
- # for testing pourposes. Trackoid does not make any difference in the
10
+ # for testing purposes. Trackoid does not make any difference in the
11
11
  # declaration order of tracking fields and aggregate tokens.
12
12
  track :visits
13
13
  aggregate :browsers do |b| b.split.first.downcase if b; end
@@ -29,6 +29,34 @@ class SecondTestModel
29
29
  aggregate :aggregate_four do Time.now end
30
30
  end
31
31
 
32
+ # Namespaced models to test avoid name collisions
33
+ # Collitions may happen when declaring internal aggregate classes for a model
34
+ # which has the same name as other models in another namespace
35
+ module MyCompany
36
+ class TestPerson
37
+ include Mongoid::Document
38
+ include Mongoid::Tracking
39
+
40
+ field :my_name
41
+
42
+ track :logins
43
+ aggregate :initials do |n| n.to_s[0]; end
44
+ end
45
+ end
46
+
47
+ module YourCompany
48
+ class TestPerson
49
+ include Mongoid::Document
50
+ include Mongoid::Tracking
51
+
52
+ field :your_name
53
+
54
+ track :logins
55
+ aggregate :initials do |n| n.to_s[0]; end
56
+ end
57
+ end
58
+
59
+
32
60
  describe Mongoid::Tracking::Aggregates do
33
61
 
34
62
  before(:all) do
@@ -244,7 +272,7 @@ describe Mongoid::Tracking::Aggregates do
244
272
  @mock.visits("Google Chrome").inc
245
273
  @mock.visits.browsers.today.should =~ [["mozilla", 1], ["google", 1]]
246
274
  @mock.visits.referers.today.should =~ [["firefox", 1], ["chrome", 1]]
247
-
275
+
248
276
  # Just for testing array manipulations
249
277
  @mock.visits.browsers.today.inject(0) {|total, c| total + c.last }.should == 2
250
278
  end
@@ -440,4 +468,31 @@ describe Mongoid::Tracking::Aggregates do
440
468
  ]
441
469
  end
442
470
  end
471
+
472
+ describe "When using models with same name on different namespaces" do
473
+ before do
474
+ MyCompany::TestPerson.all.map(&:destroy)
475
+ MyCompany::TestPerson.create(:my_name => "twoixter")
476
+ @my_object_id = MyCompany::TestPerson.first.id
477
+ @my_mock = MyCompany::TestPerson.first
478
+ @my_mock.logins("ASCII").set(1, "2012-07-07")
479
+ @my_mock.logins("EBCDIC").set(1, "2012-07-07")
480
+
481
+ YourCompany::TestPerson.all.map(&:destroy)
482
+ YourCompany::TestPerson.create(:your_name => "test")
483
+ @your_object_id = YourCompany::TestPerson.first.id
484
+ @your_mock = YourCompany::TestPerson.first
485
+ @your_mock.logins("UTF8").set(1, "2012-07-07")
486
+ @your_mock.logins("LATIN1").set(1, "2012-07-07")
487
+ end
488
+
489
+ it "should be different objects" do
490
+ @my_mock.my_name.should_not == @your_mock.your_name
491
+ end
492
+
493
+ it "should yield different aggregates" do
494
+ @my_mock.logins.initials.on("2012-07-07").should =~ [["A", 1], ["E", 1]]
495
+ @your_mock.logins.initials.on("2012-07-07").should =~ [["U", 1], ["L", 1]]
496
+ end
497
+ end
443
498
  end
@@ -2,7 +2,8 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
  require 'rubygems'
4
4
 
5
- gem 'mocha', '>= 0.9.8'
5
+ # What is this doing here?
6
+ # gem 'mocha', '>= 0.9.8'
6
7
 
7
8
  require 'mocha'
8
9
  require 'mongoid'
@@ -36,6 +36,20 @@ describe Mongoid::Tracking do
36
36
  }.should_not raise_error
37
37
  end
38
38
 
39
+ it "should not raise errors when using to/as_json" do
40
+ mock = Test.new(:name => "Trackoid")
41
+ json_as = {}
42
+ json_to = ""
43
+
44
+ lambda {
45
+ json_as = mock.as_json(:except => :_id)
46
+ json_to = mock.to_json(:except => :_id)
47
+ }.should_not raise_error
48
+
49
+ json_as.should == { "name" => "Trackoid" }
50
+ json_to.should == "{\"name\":\"Trackoid\"}"
51
+ end
52
+
39
53
  describe "when creating a new field with stats" do
40
54
  before(:all) do
41
55
  @mock = Test.new
@@ -56,7 +70,7 @@ describe Mongoid::Tracking do
56
70
 
57
71
  it "should respond 'false' to field_changed? method" do
58
72
  # Ok, this test is not very relevant since it will return false even
59
- # if Trackid does not override it.
73
+ # if Trackoid does not override it.
60
74
  @mock.visits_changed?.should be_false
61
75
  end
62
76
 
@@ -79,7 +93,7 @@ describe Mongoid::Tracking do
79
93
  lambda { @mock.visits.inc }.should raise_error Mongoid::Errors::ModelNotSaved
80
94
  end
81
95
 
82
- it "shold create an empty hash as the internal representation" do
96
+ it "should create an empty hash as the internal representation" do
83
97
  @mock.visits.send(:_original_hash).should == {}
84
98
  end
85
99
 
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{trackoid}
8
- s.version = "0.3.7"
7
+ s.name = "trackoid"
8
+ s.version = "0.3.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jose Miguel Perez"]
12
- s.date = %q{2011-09-05}
13
- s.description = %q{Trackoid uses an embeddable approach to track analytics data using the poweful features of MongoDB for scalability}
14
- s.email = %q{josemiguel@perezruiz.com}
12
+ s.date = "2012-07-07"
13
+ s.description = "Trackoid uses an embeddable approach to track analytics data using the poweful features of MongoDB for scalability"
14
+ s.email = "josemiguel@perezruiz.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.rdoc"
@@ -46,13 +46,12 @@ Gem::Specification.new do |s|
46
46
  "spec/trackoid_spec.rb",
47
47
  "trackoid.gemspec"
48
48
  ]
49
- s.homepage = %q{http://github.com/twoixter/trackoid}
49
+ s.homepage = "http://github.com/twoixter/trackoid"
50
50
  s.require_paths = ["lib"]
51
- s.rubygems_version = %q{1.3.7}
52
- s.summary = %q{Trackoid is an easy scalable analytics tracker using MongoDB and Mongoid}
51
+ s.rubygems_version = "1.8.24"
52
+ s.summary = "Trackoid is an easy scalable analytics tracker using MongoDB and Mongoid"
53
53
 
54
54
  if s.respond_to? :specification_version then
55
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
56
55
  s.specification_version = 3
57
56
 
58
57
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -60,20 +59,20 @@ Gem::Specification.new do |s|
60
59
  s.add_development_dependency(%q<rake>, [">= 0"])
61
60
  s.add_development_dependency(%q<jeweler>, [">= 0"])
62
61
  s.add_development_dependency(%q<rspec>, [">= 2.2.0"])
63
- s.add_development_dependency(%q<mocha>, [">= 0"])
62
+ s.add_development_dependency(%q<mocha>, ["= 0.11.0"])
64
63
  else
65
64
  s.add_dependency(%q<mongoid>, [">= 2.1.0"])
66
65
  s.add_dependency(%q<rake>, [">= 0"])
67
66
  s.add_dependency(%q<jeweler>, [">= 0"])
68
67
  s.add_dependency(%q<rspec>, [">= 2.2.0"])
69
- s.add_dependency(%q<mocha>, [">= 0"])
68
+ s.add_dependency(%q<mocha>, ["= 0.11.0"])
70
69
  end
71
70
  else
72
71
  s.add_dependency(%q<mongoid>, [">= 2.1.0"])
73
72
  s.add_dependency(%q<rake>, [">= 0"])
74
73
  s.add_dependency(%q<jeweler>, [">= 0"])
75
74
  s.add_dependency(%q<rspec>, [">= 2.2.0"])
76
- s.add_dependency(%q<mocha>, [">= 0"])
75
+ s.add_dependency(%q<mocha>, ["= 0.11.0"])
77
76
  end
78
77
  end
79
78
 
metadata CHANGED
@@ -1,101 +1,105 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: trackoid
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 3
8
- - 7
9
- version: 0.3.7
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.8
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Jose Miguel Perez
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-09-05 00:00:00 +02:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-07-07 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: mongoid
22
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
23
17
  none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 2
29
- - 1
30
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
31
21
  version: 2.1.0
32
22
  type: :runtime
33
23
  prerelease: false
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.1.0
30
+ - !ruby/object:Gem::Dependency
36
31
  name: rake
37
- requirement: &id002 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
38
33
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- segments:
43
- - 0
44
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
45
38
  type: :development
46
39
  prerelease: false
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
49
47
  name: jeweler
50
- requirement: &id003 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
51
49
  none: false
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- segments:
56
- - 0
57
- version: "0"
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
58
54
  type: :development
59
55
  prerelease: false
60
- version_requirements: *id003
61
- - !ruby/object:Gem::Dependency
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
62
63
  name: rspec
63
- requirement: &id004 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
64
65
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- segments:
69
- - 2
70
- - 2
71
- - 0
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
72
69
  version: 2.2.0
73
70
  type: :development
74
71
  prerelease: false
75
- version_requirements: *id004
76
- - !ruby/object:Gem::Dependency
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 2.2.0
78
+ - !ruby/object:Gem::Dependency
77
79
  name: mocha
78
- requirement: &id005 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
79
81
  none: false
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- segments:
84
- - 0
85
- version: "0"
82
+ requirements:
83
+ - - '='
84
+ - !ruby/object:Gem::Version
85
+ version: 0.11.0
86
86
  type: :development
87
87
  prerelease: false
88
- version_requirements: *id005
89
- description: Trackoid uses an embeddable approach to track analytics data using the poweful features of MongoDB for scalability
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - '='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.11.0
94
+ description: Trackoid uses an embeddable approach to track analytics data using the
95
+ poweful features of MongoDB for scalability
90
96
  email: josemiguel@perezruiz.com
91
97
  executables: []
92
-
93
98
  extensions: []
94
-
95
- extra_rdoc_files:
99
+ extra_rdoc_files:
96
100
  - LICENSE
97
101
  - README.rdoc
98
- files:
102
+ files:
99
103
  - .document
100
104
  - .rspec
101
105
  - Gemfile
@@ -124,37 +128,28 @@ files:
124
128
  - spec/timezone_spec.rb
125
129
  - spec/trackoid_spec.rb
126
130
  - trackoid.gemspec
127
- has_rdoc: true
128
131
  homepage: http://github.com/twoixter/trackoid
129
132
  licenses: []
130
-
131
133
  post_install_message:
132
134
  rdoc_options: []
133
-
134
- require_paths:
135
+ require_paths:
135
136
  - lib
136
- required_ruby_version: !ruby/object:Gem::Requirement
137
+ required_ruby_version: !ruby/object:Gem::Requirement
137
138
  none: false
138
- requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- segments:
142
- - 0
143
- version: "0"
144
- required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
144
  none: false
146
- requirements:
147
- - - ">="
148
- - !ruby/object:Gem::Version
149
- segments:
150
- - 0
151
- version: "0"
145
+ requirements:
146
+ - - ! '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
152
149
  requirements: []
153
-
154
150
  rubyforge_project:
155
- rubygems_version: 1.3.7
151
+ rubygems_version: 1.8.24
156
152
  signing_key:
157
153
  specification_version: 3
158
154
  summary: Trackoid is an easy scalable analytics tracker using MongoDB and Mongoid
159
155
  test_files: []
160
-