mongoid 1.1.4 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/HISTORY +69 -1
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/lib/mongoid.rb +39 -13
  5. data/lib/mongoid/associations.rb +1 -0
  6. data/lib/mongoid/associations/has_many.rb +19 -3
  7. data/lib/mongoid/attributes.rb +6 -1
  8. data/lib/mongoid/collection.rb +106 -0
  9. data/lib/mongoid/collections/cyclic_iterator.rb +34 -0
  10. data/lib/mongoid/collections/master.rb +28 -0
  11. data/lib/mongoid/collections/mimic.rb +46 -0
  12. data/lib/mongoid/collections/operations.rb +39 -0
  13. data/lib/mongoid/collections/slaves.rb +44 -0
  14. data/lib/mongoid/commands.rb +1 -0
  15. data/lib/mongoid/config.rb +61 -9
  16. data/lib/mongoid/contexts/enumerable.rb +24 -15
  17. data/lib/mongoid/contexts/mongo.rb +25 -31
  18. data/lib/mongoid/contexts/paging.rb +2 -2
  19. data/lib/mongoid/criteria.rb +48 -7
  20. data/lib/mongoid/criterion/exclusion.rb +2 -0
  21. data/lib/mongoid/criterion/optional.rb +2 -2
  22. data/lib/mongoid/cursor.rb +82 -0
  23. data/lib/mongoid/document.rb +12 -13
  24. data/lib/mongoid/errors.rb +35 -4
  25. data/lib/mongoid/extensions.rb +1 -0
  26. data/lib/mongoid/extensions/array/aliasing.rb +4 -0
  27. data/lib/mongoid/extensions/string/inflections.rb +44 -1
  28. data/lib/mongoid/factory.rb +17 -0
  29. data/lib/mongoid/finders.rb +7 -2
  30. data/lib/mongoid/matchers/default.rb +6 -0
  31. data/lib/mongoid/matchers/gt.rb +1 -1
  32. data/lib/mongoid/matchers/gte.rb +1 -1
  33. data/lib/mongoid/matchers/lt.rb +1 -1
  34. data/lib/mongoid/matchers/lte.rb +1 -1
  35. data/mongoid.gemspec +30 -5
  36. data/perf/benchmark.rb +5 -3
  37. data/spec/integration/mongoid/associations_spec.rb +12 -0
  38. data/spec/integration/mongoid/contexts/enumerable_spec.rb +20 -0
  39. data/spec/integration/mongoid/criteria_spec.rb +28 -0
  40. data/spec/integration/mongoid/document_spec.rb +1 -1
  41. data/spec/integration/mongoid/inheritance_spec.rb +2 -2
  42. data/spec/models/person.rb +1 -1
  43. data/spec/spec_helper.rb +9 -4
  44. data/spec/unit/mongoid/associations/has_many_spec.rb +19 -0
  45. data/spec/unit/mongoid/associations_spec.rb +9 -0
  46. data/spec/unit/mongoid/attributes_spec.rb +4 -4
  47. data/spec/unit/mongoid/collection_spec.rb +113 -0
  48. data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +75 -0
  49. data/spec/unit/mongoid/collections/master_spec.rb +41 -0
  50. data/spec/unit/mongoid/collections/mimic_spec.rb +43 -0
  51. data/spec/unit/mongoid/collections/slaves_spec.rb +81 -0
  52. data/spec/unit/mongoid/commands_spec.rb +7 -0
  53. data/spec/unit/mongoid/config_spec.rb +52 -1
  54. data/spec/unit/mongoid/contexts/enumerable_spec.rb +38 -12
  55. data/spec/unit/mongoid/contexts/mongo_spec.rb +38 -31
  56. data/spec/unit/mongoid/criteria_spec.rb +20 -12
  57. data/spec/unit/mongoid/criterion/exclusion_spec.rb +26 -0
  58. data/spec/unit/mongoid/criterion/optional_spec.rb +13 -0
  59. data/spec/unit/mongoid/cursor_spec.rb +74 -0
  60. data/spec/unit/mongoid/document_spec.rb +4 -5
  61. data/spec/unit/mongoid/errors_spec.rb +5 -9
  62. data/spec/unit/mongoid/extensions/string/inflections_spec.rb +21 -2
  63. data/spec/unit/mongoid/factory_spec.rb +16 -0
  64. data/spec/unit/mongoid_spec.rb +4 -4
  65. metadata +28 -3
@@ -19,6 +19,8 @@ module Mongoid #:nodoc:
19
19
  #
20
20
  # Returns: <tt>self</tt>
21
21
  def excludes(attributes = {})
22
+ mongo_id = attributes.delete(:id)
23
+ attributes = attributes.merge(:_id => mongo_id) if mongo_id
22
24
  update_selector(attributes, "$ne")
23
25
  end
24
26
 
@@ -54,8 +54,8 @@ module Mongoid #:nodoc:
54
54
  # Returns the offset option. If a per_page option is in the list then it
55
55
  # will replace it with a skip parameter and return the same value. Defaults
56
56
  # to 20 if nothing was provided.
57
- def offset
58
- @options[:skip]
57
+ def offset(*args)
58
+ args.size > 0 ? skip(args.first) : @options[:skip]
59
59
  end
60
60
 
61
61
  # Adds a criterion to the +Criteria+ that specifies the sort order of
@@ -0,0 +1,82 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ class Cursor
4
+ include Enumerable
5
+ # Operations on the Mongo::Cursor object that will not get overriden by the
6
+ # Mongoid::Cursor are defined here.
7
+ OPERATIONS = [
8
+ :admin,
9
+ :close,
10
+ :closed?,
11
+ :count,
12
+ :explain,
13
+ :fields,
14
+ :full_collection_name,
15
+ :hint,
16
+ :limit,
17
+ :order,
18
+ :query_options_hash,
19
+ :query_opts,
20
+ :selector,
21
+ :skip,
22
+ :snapshot,
23
+ :sort,
24
+ :timeout
25
+ ]
26
+
27
+ attr_reader :collection
28
+
29
+ # The operations above will all delegate to the proxied Mongo::Cursor.
30
+ #
31
+ # Example:
32
+ #
33
+ # <tt>cursor.close</tt>
34
+ OPERATIONS.each do |name|
35
+ define_method(name) { |*args| @cursor.send(name, *args) }
36
+ end
37
+
38
+ # Iterate over each document in the cursor and yield to it.
39
+ #
40
+ # Example:
41
+ #
42
+ # <tt>cursor.each { |doc| p doc.title }</tt>
43
+ def each
44
+ @cursor.each do |document|
45
+ yield Mongoid::Factory.build(document)
46
+ end
47
+ end
48
+
49
+ # Create the new +Mongoid::Cursor+.
50
+ #
51
+ # Options:
52
+ #
53
+ # collection: The Mongoid::Collection instance.
54
+ # cursor: The Mongo::Cursor to be proxied.
55
+ #
56
+ # Example:
57
+ #
58
+ # <tt>Mongoid::Cursor.new(collection, cursor)</tt>
59
+ def initialize(collection, cursor)
60
+ @collection, @cursor = collection, cursor
61
+ end
62
+
63
+ # Return the next document in the cursor. Will instantiate a new Mongoid
64
+ # document with the attributes.
65
+ #
66
+ # Example:
67
+ #
68
+ # <tt>cursor.next_document</tt>
69
+ def next_document
70
+ Mongoid::Factory.build(@cursor.next_document)
71
+ end
72
+
73
+ # Returns an array of all the documents in the cursor.
74
+ #
75
+ # Example:
76
+ #
77
+ # <tt>cursor.to_a</tt>
78
+ def to_a
79
+ @cursor.to_a.collect { |attrs| Mongoid::Factory.build(attrs) }
80
+ end
81
+ end
82
+ end
@@ -33,7 +33,7 @@ module Mongoid #:nodoc:
33
33
  # Returns: <tt>Mongo::Collection</tt>
34
34
  def collection
35
35
  raise Errors::InvalidCollection.new(self) if embedded
36
- self._collection ||= Mongoid.database.collection(self.collection_name)
36
+ self._collection ||= Mongoid::Collection.new(self.collection_name)
37
37
  add_indexes; self._collection
38
38
  end
39
39
 
@@ -94,7 +94,7 @@ module Mongoid #:nodoc:
94
94
  # <tt>Person.store_in :populdation</tt>
95
95
  def store_in(name)
96
96
  self.collection_name = name.to_s
97
- self._collection = Mongoid.database.collection(name.to_s)
97
+ self._collection = Mongoid::Collection.new(name.to_s)
98
98
  end
99
99
 
100
100
  # Returns all types to query for when using this class as the base.
@@ -170,14 +170,6 @@ module Mongoid #:nodoc:
170
170
  identify
171
171
  end
172
172
 
173
- # apply default values to attributes - calling procs as required
174
- def attributes_with_defaults(attributes = {})
175
- default_values = defaults.merge(attributes)
176
- default_values.each_pair do |key, val|
177
- default_values[key] = val.call if val.respond_to?(:call)
178
- end
179
- end
180
-
181
173
  # Returns the class name plus its attributes.
182
174
  def inspect
183
175
  attrs = fields.map { |name, field| "#{name}: #{@attributes[name].inspect}" } * ", "
@@ -262,7 +254,7 @@ module Mongoid #:nodoc:
262
254
  # Example:
263
255
  #
264
256
  # <tt>person.to_json</tt>
265
- def to_json(options=nil)
257
+ def to_json(options = nil)
266
258
  attributes.to_json(options)
267
259
  end
268
260
 
@@ -292,8 +284,15 @@ module Mongoid #:nodoc:
292
284
  clear ? @attributes.delete(name) : @attributes.insert(name, attrs)
293
285
  notify
294
286
  end
295
- end
296
287
 
288
+ protected
289
+ # apply default values to attributes - calling procs as required
290
+ def attributes_with_defaults(attributes = {})
291
+ default_values = defaults.merge(attributes)
292
+ default_values.each_pair do |key, val|
293
+ default_values[key] = val.call if val.respond_to?(:call)
294
+ end
295
+ end
296
+ end
297
297
  end
298
-
299
298
  end
@@ -3,7 +3,12 @@ module Mongoid #:nodoc
3
3
  module Errors #:nodoc
4
4
 
5
5
  # Raised when querying the database for a document by a specific id which
6
- # does not exist.
6
+ # does not exist. If multiple ids were passed then it will display all of
7
+ # those.
8
+ #
9
+ # Example:
10
+ #
11
+ # <tt>DocumentNotFound.new(Person, ["1", "2"])</tt>
7
12
  class DocumentNotFound < RuntimeError
8
13
  def initialize(klass, ids)
9
14
  @klass, @identifier = klass, ids.is_a?(Array) ? ids.join(", ") : ids
@@ -14,12 +19,34 @@ module Mongoid #:nodoc
14
19
  end
15
20
 
16
21
  # Raised when invalid options are passed into a constructor or method.
22
+ #
23
+ # Example:
24
+ #
25
+ # <tt>InvalidOptions.new</tt>
17
26
  class InvalidOptions < RuntimeError; end
18
27
 
19
- # Raised when the database connection has not been set up.
20
- class InvalidDatabase < RuntimeError; end
28
+ # Raised when the database connection has not been set up properly, either
29
+ # by attempting to set an object on the db that is not a +Mongo::DB+, or
30
+ # not setting anything at all.
31
+ #
32
+ # Example:
33
+ #
34
+ # <tt>InvalidDatabase.new("Not a DB")</tt>
35
+ class InvalidDatabase < RuntimeError
36
+ def initialize(database)
37
+ @database = database
38
+ end
39
+ def message
40
+ "Database should be a Mongo::DB, not #{@database.class.name}"
41
+ end
42
+ end
21
43
 
22
- # Raised when a persisence method ending in ! fails validation.
44
+ # Raised when a persisence method ending in ! fails validation. The message
45
+ # will contain the full error messages from the +Document+ in question.
46
+ #
47
+ # Example:
48
+ #
49
+ # <tt>Validations.new(person.errors)</tt>
23
50
  class Validations < RuntimeError
24
51
  def initialize(errors)
25
52
  @errors = errors
@@ -31,6 +58,10 @@ module Mongoid #:nodoc
31
58
 
32
59
  # This error is raised when trying to access a Mongo::Collection from an
33
60
  # embedded document.
61
+ #
62
+ # Example:
63
+ #
64
+ # <tt>InvalidCollection.new(Address)</tt>
34
65
  class InvalidCollection < RuntimeError
35
66
  def initialize(klass)
36
67
  @klass = klass
@@ -1,5 +1,6 @@
1
1
  # encoding: utf-8
2
2
  require "mongoid/extensions/array/accessors"
3
+ require "mongoid/extensions/array/aliasing"
3
4
  require "mongoid/extensions/array/assimilation"
4
5
  require "mongoid/extensions/array/conversions"
5
6
  require "mongoid/extensions/array/parentization"
@@ -0,0 +1,4 @@
1
+ # encoding: utf-8
2
+ class Array
3
+ alias :count :size
4
+ end
@@ -10,6 +10,44 @@ module Mongoid #:nodoc:
10
10
  inflect.irregular("canvas", "canvases")
11
11
  end
12
12
 
13
+ # Represents how special characters will get converted when creating a
14
+ # composite key that should be unique and part of a url.
15
+ CHAR_CONV = {
16
+ " " => "-",
17
+ "!" => "-excl-",
18
+ "\"" => "-bckslsh-",
19
+ "#" => "-hash-",
20
+ "$" => "-dol-",
21
+ "%" => "-perc-",
22
+ "&" => "-and-",
23
+ "'" => "-quo-",
24
+ "(" => "-oparen-",
25
+ ")" => "-cparen-",
26
+ "*" => "-astx-",
27
+ "+" => "-plus-",
28
+ "," => "-comma-",
29
+ "-" => "-dash-",
30
+ "." => "-period-",
31
+ "/" => "-fwdslsh-",
32
+ ":" => "-colon-",
33
+ ";" => "-semicol-",
34
+ "<" => "-lt-",
35
+ "=" => "-eq-",
36
+ ">" => "-gt-",
37
+ "?" => "-ques-",
38
+ "@" => "-at-",
39
+ "[" => "-obrck-",
40
+ "\\" => "-bckslsh-",
41
+ "]" => "-clbrck-",
42
+ "^" => "-carat-",
43
+ "_" => "-undscr-",
44
+ "`" => "-bcktick-",
45
+ "{" => "-ocurly-",
46
+ "|" => "-pipe-",
47
+ "}" => "-clcurly-",
48
+ "~" => "-tilda-"
49
+ }
50
+
13
51
  REVERSALS = {
14
52
  "asc" => "desc",
15
53
  "ascending" => "descending",
@@ -22,7 +60,12 @@ module Mongoid #:nodoc:
22
60
  end
23
61
 
24
62
  def identify
25
- gsub(" ", "_").gsub(/\W/, "").dasherize.downcase
63
+ if Mongoid.parameterize_keys
64
+ key = ""
65
+ each_char { |c| key += (CHAR_CONV[c] || c.downcase) }; key
66
+ else
67
+ self
68
+ end
26
69
  end
27
70
 
28
71
  def labelize
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc:
3
+ class Factory #:nodoc:
4
+ # Builds a new +Document+ from the supplied attributes.
5
+ #
6
+ # Example:
7
+ #
8
+ # <tt>Mongoid::Factory.build(Person, {})</tt>
9
+ #
10
+ # Options:
11
+ #
12
+ # attributes: The +Document+ attributes.
13
+ def self.build(attributes)
14
+ attributes["_type"].constantize.instantiate(attributes)
15
+ end
16
+ end
17
+ end
@@ -63,7 +63,7 @@ module Mongoid #:nodoc:
63
63
  #
64
64
  # <tt>Person.find_or_create_by(:attribute => "value")</tt>
65
65
  def find_or_create_by(attrs = {})
66
- first(:conditions => attrs) || self.create(attrs)
66
+ find_or(:create, attrs)
67
67
  end
68
68
 
69
69
  # Find the first +Document+ given the conditions, or instantiates a new document
@@ -75,7 +75,7 @@ module Mongoid #:nodoc:
75
75
  #
76
76
  # <tt>Person.find_or_initialize_by(:attribute => "value")</tt>
77
77
  def find_or_initialize_by(attrs = {})
78
- first(:conditions => attrs) || self.new(attrs)
78
+ find_or(:new, attrs)
79
79
  end
80
80
 
81
81
  # Find the first +Document+ given the conditions.
@@ -215,5 +215,10 @@ module Mongoid #:nodoc:
215
215
  Criteria.new(self).where(selector)
216
216
  end
217
217
 
218
+ protected
219
+ # Find the first object or create/initialize it.
220
+ def find_or(method, attrs = {})
221
+ first(:conditions => attrs) || send(method, attrs)
222
+ end
218
223
  end
219
224
  end
@@ -12,9 +12,15 @@ module Mongoid #:nodoc:
12
12
  end
13
13
 
14
14
  protected
15
+ # Return the first value in the hash.
15
16
  def first(value)
16
17
  value.values.first
17
18
  end
19
+
20
+ # If object exists then compare, else return false
21
+ def determine(value, operator)
22
+ @attribute ? @attribute.send(operator, first(value)) : false
23
+ end
18
24
  end
19
25
  end
20
26
  end
@@ -4,7 +4,7 @@ module Mongoid #:nodoc:
4
4
  class Gt < Default
5
5
  # Return true if the attribute is greater than the value.
6
6
  def matches?(value)
7
- @attribute ? @attribute > first(value) : false
7
+ determine(value, :>)
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Mongoid #:nodoc:
4
4
  class Gte < Default
5
5
  # Return true if the attribute is greater than or equal to the value.
6
6
  def matches?(value)
7
- @attribute ? @attribute >= first(value) : false
7
+ determine(value, :>=)
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Mongoid #:nodoc:
4
4
  class Lt < Default
5
5
  # Return true if the attribute is less than the value.
6
6
  def matches?(value)
7
- @attribute ? @attribute < first(value) : false
7
+ determine(value, :<)
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Mongoid #:nodoc:
4
4
  class Lte < Default
5
5
  # Return true if the attribute is less than or equal to the value.
6
6
  def matches?(value)
7
- @attribute ? @attribute <= first(value) : false
7
+ determine(value, :<=)
8
8
  end
9
9
  end
10
10
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mongoid}
8
- s.version = "1.1.4"
8
+ s.version = "1.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Durran Jordan"]
12
- s.date = %q{2010-01-26}
12
+ s.date = %q{2010-02-07}
13
13
  s.email = %q{durran@gmail.com}
14
14
  s.extra_rdoc_files = [
15
15
  "README.rdoc"
@@ -35,6 +35,12 @@ Gem::Specification.new do |s|
35
35
  "lib/mongoid/associations/proxy.rb",
36
36
  "lib/mongoid/attributes.rb",
37
37
  "lib/mongoid/callbacks.rb",
38
+ "lib/mongoid/collection.rb",
39
+ "lib/mongoid/collections/cyclic_iterator.rb",
40
+ "lib/mongoid/collections/master.rb",
41
+ "lib/mongoid/collections/mimic.rb",
42
+ "lib/mongoid/collections/operations.rb",
43
+ "lib/mongoid/collections/slaves.rb",
38
44
  "lib/mongoid/commands.rb",
39
45
  "lib/mongoid/commands/create.rb",
40
46
  "lib/mongoid/commands/delete.rb",
@@ -54,10 +60,12 @@ Gem::Specification.new do |s|
54
60
  "lib/mongoid/criterion/exclusion.rb",
55
61
  "lib/mongoid/criterion/inclusion.rb",
56
62
  "lib/mongoid/criterion/optional.rb",
63
+ "lib/mongoid/cursor.rb",
57
64
  "lib/mongoid/document.rb",
58
65
  "lib/mongoid/errors.rb",
59
66
  "lib/mongoid/extensions.rb",
60
67
  "lib/mongoid/extensions/array/accessors.rb",
68
+ "lib/mongoid/extensions/array/aliasing.rb",
61
69
  "lib/mongoid/extensions/array/assimilation.rb",
62
70
  "lib/mongoid/extensions/array/conversions.rb",
63
71
  "lib/mongoid/extensions/array/parentization.rb",
@@ -78,6 +86,7 @@ Gem::Specification.new do |s|
78
86
  "lib/mongoid/extensions/string/inflections.rb",
79
87
  "lib/mongoid/extensions/symbol/inflections.rb",
80
88
  "lib/mongoid/extensions/time/conversions.rb",
89
+ "lib/mongoid/factory.rb",
81
90
  "lib/mongoid/field.rb",
82
91
  "lib/mongoid/fields.rb",
83
92
  "lib/mongoid/finders.rb",
@@ -105,6 +114,7 @@ Gem::Specification.new do |s|
105
114
  "spec/integration/mongoid/associations_spec.rb",
106
115
  "spec/integration/mongoid/attributes_spec.rb",
107
116
  "spec/integration/mongoid/commands_spec.rb",
117
+ "spec/integration/mongoid/contexts/enumerable_spec.rb",
108
118
  "spec/integration/mongoid/criteria_spec.rb",
109
119
  "spec/integration/mongoid/document_spec.rb",
110
120
  "spec/integration/mongoid/extensions_spec.rb",
@@ -142,6 +152,11 @@ Gem::Specification.new do |s|
142
152
  "spec/unit/mongoid/associations_spec.rb",
143
153
  "spec/unit/mongoid/attributes_spec.rb",
144
154
  "spec/unit/mongoid/callbacks_spec.rb",
155
+ "spec/unit/mongoid/collection_spec.rb",
156
+ "spec/unit/mongoid/collections/cyclic_iterator_spec.rb",
157
+ "spec/unit/mongoid/collections/master_spec.rb",
158
+ "spec/unit/mongoid/collections/mimic_spec.rb",
159
+ "spec/unit/mongoid/collections/slaves_spec.rb",
145
160
  "spec/unit/mongoid/commands/create_spec.rb",
146
161
  "spec/unit/mongoid/commands/delete_all_spec.rb",
147
162
  "spec/unit/mongoid/commands/delete_spec.rb",
@@ -157,6 +172,7 @@ Gem::Specification.new do |s|
157
172
  "spec/unit/mongoid/criterion/exclusion_spec.rb",
158
173
  "spec/unit/mongoid/criterion/inclusion_spec.rb",
159
174
  "spec/unit/mongoid/criterion/optional_spec.rb",
175
+ "spec/unit/mongoid/cursor_spec.rb",
160
176
  "spec/unit/mongoid/document_spec.rb",
161
177
  "spec/unit/mongoid/errors_spec.rb",
162
178
  "spec/unit/mongoid/extensions/array/accessors_spec.rb",
@@ -180,6 +196,7 @@ Gem::Specification.new do |s|
180
196
  "spec/unit/mongoid/extensions/string/inflections_spec.rb",
181
197
  "spec/unit/mongoid/extensions/symbol/inflections_spec.rb",
182
198
  "spec/unit/mongoid/extensions/time/conversions_spec.rb",
199
+ "spec/unit/mongoid/factory_spec.rb",
183
200
  "spec/unit/mongoid/field_spec.rb",
184
201
  "spec/unit/mongoid/fields_spec.rb",
185
202
  "spec/unit/mongoid/finders_spec.rb",
@@ -213,6 +230,7 @@ Gem::Specification.new do |s|
213
230
  "spec/integration/mongoid/associations_spec.rb",
214
231
  "spec/integration/mongoid/attributes_spec.rb",
215
232
  "spec/integration/mongoid/commands_spec.rb",
233
+ "spec/integration/mongoid/contexts/enumerable_spec.rb",
216
234
  "spec/integration/mongoid/criteria_spec.rb",
217
235
  "spec/integration/mongoid/document_spec.rb",
218
236
  "spec/integration/mongoid/extensions_spec.rb",
@@ -249,6 +267,11 @@ Gem::Specification.new do |s|
249
267
  "spec/unit/mongoid/associations_spec.rb",
250
268
  "spec/unit/mongoid/attributes_spec.rb",
251
269
  "spec/unit/mongoid/callbacks_spec.rb",
270
+ "spec/unit/mongoid/collection_spec.rb",
271
+ "spec/unit/mongoid/collections/cyclic_iterator_spec.rb",
272
+ "spec/unit/mongoid/collections/master_spec.rb",
273
+ "spec/unit/mongoid/collections/mimic_spec.rb",
274
+ "spec/unit/mongoid/collections/slaves_spec.rb",
252
275
  "spec/unit/mongoid/commands/create_spec.rb",
253
276
  "spec/unit/mongoid/commands/delete_all_spec.rb",
254
277
  "spec/unit/mongoid/commands/delete_spec.rb",
@@ -264,6 +287,7 @@ Gem::Specification.new do |s|
264
287
  "spec/unit/mongoid/criterion/exclusion_spec.rb",
265
288
  "spec/unit/mongoid/criterion/inclusion_spec.rb",
266
289
  "spec/unit/mongoid/criterion/optional_spec.rb",
290
+ "spec/unit/mongoid/cursor_spec.rb",
267
291
  "spec/unit/mongoid/document_spec.rb",
268
292
  "spec/unit/mongoid/errors_spec.rb",
269
293
  "spec/unit/mongoid/extensions/array/accessors_spec.rb",
@@ -287,6 +311,7 @@ Gem::Specification.new do |s|
287
311
  "spec/unit/mongoid/extensions/string/inflections_spec.rb",
288
312
  "spec/unit/mongoid/extensions/symbol/inflections_spec.rb",
289
313
  "spec/unit/mongoid/extensions/time/conversions_spec.rb",
314
+ "spec/unit/mongoid/factory_spec.rb",
290
315
  "spec/unit/mongoid/field_spec.rb",
291
316
  "spec/unit/mongoid/fields_spec.rb",
292
317
  "spec/unit/mongoid/finders_spec.rb",
@@ -320,14 +345,14 @@ Gem::Specification.new do |s|
320
345
  s.add_runtime_dependency(%q<activesupport>, ["<= 2.3.5"])
321
346
  s.add_runtime_dependency(%q<mongo>, [">= 0.18.2"])
322
347
  s.add_runtime_dependency(%q<durran-validatable>, [">= 2.0.1"])
323
- s.add_runtime_dependency(%q<leshill-will_paginate>, [">= 2.3.11"])
348
+ s.add_runtime_dependency(%q<will_paginate>, [">= 2.3.11"])
324
349
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
325
350
  s.add_development_dependency(%q<mocha>, [">= 0.9.8"])
326
351
  else
327
352
  s.add_dependency(%q<activesupport>, ["<= 2.3.5"])
328
353
  s.add_dependency(%q<mongo>, [">= 0.18.2"])
329
354
  s.add_dependency(%q<durran-validatable>, [">= 2.0.1"])
330
- s.add_dependency(%q<leshill-will_paginate>, [">= 2.3.11"])
355
+ s.add_dependency(%q<will_paginate>, [">= 2.3.11"])
331
356
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
332
357
  s.add_dependency(%q<mocha>, [">= 0.9.8"])
333
358
  end
@@ -335,7 +360,7 @@ Gem::Specification.new do |s|
335
360
  s.add_dependency(%q<activesupport>, ["<= 2.3.5"])
336
361
  s.add_dependency(%q<mongo>, [">= 0.18.2"])
337
362
  s.add_dependency(%q<durran-validatable>, [">= 2.0.1"])
338
- s.add_dependency(%q<leshill-will_paginate>, [">= 2.3.11"])
363
+ s.add_dependency(%q<will_paginate>, [">= 2.3.11"])
339
364
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
340
365
  s.add_dependency(%q<mocha>, [">= 0.9.8"])
341
366
  end