mongoid-with-auth 1.9.4

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.
Files changed (104) hide show
  1. data/MIT_LICENSE +20 -0
  2. data/README.rdoc +49 -0
  3. data/lib/mongoid.rb +122 -0
  4. data/lib/mongoid/associations.rb +300 -0
  5. data/lib/mongoid/associations/belongs_to_related.rb +58 -0
  6. data/lib/mongoid/associations/embedded_in.rb +72 -0
  7. data/lib/mongoid/associations/embeds_many.rb +254 -0
  8. data/lib/mongoid/associations/embeds_one.rb +96 -0
  9. data/lib/mongoid/associations/has_many_related.rb +181 -0
  10. data/lib/mongoid/associations/has_one_related.rb +85 -0
  11. data/lib/mongoid/associations/meta_data.rb +29 -0
  12. data/lib/mongoid/associations/options.rb +57 -0
  13. data/lib/mongoid/associations/proxy.rb +24 -0
  14. data/lib/mongoid/attributes.rb +204 -0
  15. data/lib/mongoid/callbacks.rb +23 -0
  16. data/lib/mongoid/collection.rb +120 -0
  17. data/lib/mongoid/collections.rb +41 -0
  18. data/lib/mongoid/collections/cyclic_iterator.rb +34 -0
  19. data/lib/mongoid/collections/master.rb +29 -0
  20. data/lib/mongoid/collections/operations.rb +41 -0
  21. data/lib/mongoid/collections/slaves.rb +45 -0
  22. data/lib/mongoid/components.rb +27 -0
  23. data/lib/mongoid/concern.rb +31 -0
  24. data/lib/mongoid/config.rb +205 -0
  25. data/lib/mongoid/contexts.rb +25 -0
  26. data/lib/mongoid/contexts/enumerable.rb +151 -0
  27. data/lib/mongoid/contexts/ids.rb +25 -0
  28. data/lib/mongoid/contexts/mongo.rb +285 -0
  29. data/lib/mongoid/contexts/paging.rb +50 -0
  30. data/lib/mongoid/criteria.rb +239 -0
  31. data/lib/mongoid/criterion/complex.rb +21 -0
  32. data/lib/mongoid/criterion/exclusion.rb +65 -0
  33. data/lib/mongoid/criterion/inclusion.rb +110 -0
  34. data/lib/mongoid/criterion/optional.rb +136 -0
  35. data/lib/mongoid/cursor.rb +81 -0
  36. data/lib/mongoid/deprecation.rb +22 -0
  37. data/lib/mongoid/dirty.rb +253 -0
  38. data/lib/mongoid/document.rb +311 -0
  39. data/lib/mongoid/errors.rb +108 -0
  40. data/lib/mongoid/extensions.rb +101 -0
  41. data/lib/mongoid/extensions/array/accessors.rb +17 -0
  42. data/lib/mongoid/extensions/array/aliasing.rb +4 -0
  43. data/lib/mongoid/extensions/array/assimilation.rb +26 -0
  44. data/lib/mongoid/extensions/array/conversions.rb +29 -0
  45. data/lib/mongoid/extensions/array/parentization.rb +13 -0
  46. data/lib/mongoid/extensions/big_decimal/conversions.rb +19 -0
  47. data/lib/mongoid/extensions/binary/conversions.rb +17 -0
  48. data/lib/mongoid/extensions/boolean/conversions.rb +22 -0
  49. data/lib/mongoid/extensions/date/conversions.rb +24 -0
  50. data/lib/mongoid/extensions/datetime/conversions.rb +12 -0
  51. data/lib/mongoid/extensions/float/conversions.rb +20 -0
  52. data/lib/mongoid/extensions/hash/accessors.rb +38 -0
  53. data/lib/mongoid/extensions/hash/assimilation.rb +39 -0
  54. data/lib/mongoid/extensions/hash/conversions.rb +45 -0
  55. data/lib/mongoid/extensions/hash/criteria_helpers.rb +20 -0
  56. data/lib/mongoid/extensions/hash/scoping.rb +12 -0
  57. data/lib/mongoid/extensions/integer/conversions.rb +20 -0
  58. data/lib/mongoid/extensions/nil/assimilation.rb +17 -0
  59. data/lib/mongoid/extensions/object/conversions.rb +33 -0
  60. data/lib/mongoid/extensions/objectid/conversions.rb +15 -0
  61. data/lib/mongoid/extensions/proc/scoping.rb +12 -0
  62. data/lib/mongoid/extensions/string/conversions.rb +15 -0
  63. data/lib/mongoid/extensions/string/inflections.rb +97 -0
  64. data/lib/mongoid/extensions/symbol/inflections.rb +36 -0
  65. data/lib/mongoid/extensions/time_conversions.rb +35 -0
  66. data/lib/mongoid/extras.rb +61 -0
  67. data/lib/mongoid/factory.rb +20 -0
  68. data/lib/mongoid/field.rb +59 -0
  69. data/lib/mongoid/fields.rb +65 -0
  70. data/lib/mongoid/finders.rb +136 -0
  71. data/lib/mongoid/identity.rb +39 -0
  72. data/lib/mongoid/indexes.rb +30 -0
  73. data/lib/mongoid/javascript.rb +21 -0
  74. data/lib/mongoid/javascript/functions.yml +37 -0
  75. data/lib/mongoid/matchers.rb +36 -0
  76. data/lib/mongoid/matchers/all.rb +11 -0
  77. data/lib/mongoid/matchers/default.rb +26 -0
  78. data/lib/mongoid/matchers/exists.rb +13 -0
  79. data/lib/mongoid/matchers/gt.rb +11 -0
  80. data/lib/mongoid/matchers/gte.rb +11 -0
  81. data/lib/mongoid/matchers/in.rb +11 -0
  82. data/lib/mongoid/matchers/lt.rb +11 -0
  83. data/lib/mongoid/matchers/lte.rb +11 -0
  84. data/lib/mongoid/matchers/ne.rb +11 -0
  85. data/lib/mongoid/matchers/nin.rb +11 -0
  86. data/lib/mongoid/matchers/size.rb +11 -0
  87. data/lib/mongoid/memoization.rb +33 -0
  88. data/lib/mongoid/named_scope.rb +37 -0
  89. data/lib/mongoid/observable.rb +30 -0
  90. data/lib/mongoid/paths.rb +62 -0
  91. data/lib/mongoid/persistence.rb +222 -0
  92. data/lib/mongoid/persistence/command.rb +39 -0
  93. data/lib/mongoid/persistence/insert.rb +50 -0
  94. data/lib/mongoid/persistence/insert_embedded.rb +38 -0
  95. data/lib/mongoid/persistence/remove.rb +39 -0
  96. data/lib/mongoid/persistence/remove_all.rb +37 -0
  97. data/lib/mongoid/persistence/remove_embedded.rb +50 -0
  98. data/lib/mongoid/persistence/update.rb +63 -0
  99. data/lib/mongoid/scope.rb +75 -0
  100. data/lib/mongoid/state.rb +39 -0
  101. data/lib/mongoid/timestamps.rb +27 -0
  102. data/lib/mongoid/version.rb +4 -0
  103. data/lib/mongoid/versioning.rb +27 -0
  104. metadata +284 -0
@@ -0,0 +1,311 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc:
3
+ module Document
4
+ extend ActiveSupport::Concern
5
+ include Mongoid::Components
6
+ included do
7
+ include Mongoid::Components
8
+
9
+ cattr_accessor :primary_key, :hereditary
10
+ self.hereditary = false
11
+
12
+ attr_accessor :association_name, :_parent
13
+
14
+ delegate :db, :primary_key, :to => "self.class"
15
+ end
16
+
17
+ module ClassMethods
18
+ # Return the database associated with this class.
19
+ def db
20
+ collection.db
21
+ end
22
+
23
+ # Perform default behavior but mark the hierarchy as being hereditary.
24
+ def inherited(subclass)
25
+ super(subclass)
26
+ self.hereditary = true
27
+ end
28
+
29
+ # Returns a human readable version of the class.
30
+ #
31
+ # Example:
32
+ #
33
+ # <tt>MixedDrink.human_name # returns "Mixed Drink"</tt>
34
+ def human_name
35
+ name.labelize
36
+ end
37
+
38
+ # Instantiate a new object, only when loaded from the database or when
39
+ # the attributes have already been typecast.
40
+ #
41
+ # Example:
42
+ #
43
+ # <tt>Person.instantiate(:title => "Sir", :age => 30)</tt>
44
+ def instantiate(attrs = nil, allocating = false)
45
+ attributes = attrs || {}
46
+ if attributes["_id"] || allocating
47
+ document = allocate
48
+ document.instance_variable_set(:@attributes, attributes)
49
+ document.setup_modifications
50
+ return document
51
+ else
52
+ return new(attrs)
53
+ end
54
+ end
55
+
56
+ # Defines the field that will be used for the id of this +Document+. This
57
+ # set the id of this +Document+ before save to a parameterized version of
58
+ # the field that was supplied. This is good for use for readable URLS in
59
+ # web applications.
60
+ #
61
+ # Example:
62
+ #
63
+ # class Person
64
+ # include Mongoid::Document
65
+ # key :first_name, :last_name
66
+ # end
67
+ def key(*fields)
68
+ self.primary_key = fields
69
+ before_save :identify
70
+ end
71
+
72
+ # Returns all types to query for when using this class as the base.
73
+ def _types
74
+ @_type ||= (self.subclasses + [ self.name ])
75
+ end
76
+
77
+ # return the list of subclassses for an object
78
+ def subclasses_of(*superclasses) #:nodoc:
79
+ subclasses = []
80
+ superclasses.each do |sup|
81
+ ObjectSpace.each_object(class << sup; self; end) do |k|
82
+ if k != sup && (k.name.blank? || eval("defined?(::#{k}) && ::#{k}.object_id == k.object_id"))
83
+ subclasses << k
84
+ end
85
+ end
86
+ end
87
+ subclasses
88
+ end
89
+ end
90
+
91
+ module InstanceMethods
92
+ # Performs equality checking on the document ids. For more robust
93
+ # equality checking please override this method.
94
+ def ==(other)
95
+ return false unless other.is_a?(Document)
96
+ id == other.id
97
+ end
98
+
99
+ # Delegates to ==
100
+ def eql?(comparison_object)
101
+ self == (comparison_object)
102
+ end
103
+
104
+ # Delegates to id in order to allow two records of the same type and id to work with something like:
105
+ # [ Person.find(1), Person.find(2), Person.find(3) ] & [ Person.find(1), Person.find(4) ] # => [ Person.find(1) ]
106
+ def hash
107
+ id.hash
108
+ end
109
+
110
+ # Is inheritance in play here?
111
+ #
112
+ # Returns:
113
+ #
114
+ # <tt>true</tt> if inheritance used, <tt>false</tt> if not.
115
+ def hereditary?
116
+ !!self.hereditary
117
+ end
118
+
119
+ # Introduces a child object into the +Document+ object graph. This will
120
+ # set up the relationships between the parent and child and update the
121
+ # attributes of the parent +Document+.
122
+ #
123
+ # Options:
124
+ #
125
+ # parent: The +Document+ to assimilate with.
126
+ # options: The association +Options+ for the child.
127
+ def assimilate(parent, options)
128
+ parentize(parent, options.name); notify; self
129
+ end
130
+
131
+ # Return the attributes hash with indifferent access.
132
+ def attributes
133
+ @attributes.with_indifferent_access
134
+ end
135
+
136
+ # Clone the current +Document+. This will return all attributes with the
137
+ # exception of the document's id and versions.
138
+ def clone
139
+ self.class.instantiate(@attributes.except("_id").except("versions").dup, true)
140
+ end
141
+
142
+ # Generate an id for this +Document+.
143
+ def identify
144
+ Identity.create(self)
145
+ end
146
+
147
+ # Instantiate a new +Document+, setting the Document's attributes if
148
+ # given. If no attributes are provided, they will be initialized with
149
+ # an empty +Hash+.
150
+ #
151
+ # If a primary key is defined, the document's id will be set to that key,
152
+ # otherwise it will be set to a fresh +BSON::ObjectId+ string.
153
+ #
154
+ # Options:
155
+ #
156
+ # attrs: The attributes +Hash+ to set up the document with.
157
+ def initialize(attrs = nil)
158
+ @attributes = default_attributes
159
+ process(attrs)
160
+ @new_record = true
161
+ document = yield self if block_given?
162
+ identify
163
+ end
164
+
165
+ # Returns the class name plus its attributes.
166
+ def inspect
167
+ attrs = fields.map { |name, field| "#{name}: #{@attributes[name].inspect}" }
168
+ if Mongoid.allow_dynamic_fields
169
+ dynamic_keys = @attributes.keys - fields.keys - associations.keys - ["_id", "_type"]
170
+ attrs += dynamic_keys.map { |name| "#{name}: #{@attributes[name].inspect}" }
171
+ end
172
+ "#<#{self.class.name} _id: #{id}, #{attrs * ', '}>"
173
+ end
174
+
175
+ # Notify observers of an update.
176
+ #
177
+ # Example:
178
+ #
179
+ # <tt>person.notify</tt>
180
+ def notify
181
+ notify_observers(self)
182
+ end
183
+
184
+ # Sets up a child/parent association. This is used for newly created
185
+ # objects so they can be properly added to the graph and have the parent
186
+ # observers set up properly.
187
+ #
188
+ # Options:
189
+ #
190
+ # abject: The parent object that needs to be set for the child.
191
+ # association_name: The name of the association for the child.
192
+ #
193
+ # Example:
194
+ #
195
+ # <tt>address.parentize(person, :addresses)</tt>
196
+ def parentize(object, association_name)
197
+ self._parent = object
198
+ self.association_name = association_name.to_s
199
+ add_observer(object)
200
+ end
201
+
202
+ # Return the attributes hash.
203
+ def raw_attributes
204
+ @attributes
205
+ end
206
+
207
+ # Reloads the +Document+ attributes from the database.
208
+ def reload
209
+ reloaded = collection.find_one(:_id => id)
210
+ if Mongoid.raise_not_found_error
211
+ raise Errors::DocumentNotFound.new(self.class, id) if reloaded.nil?
212
+ end
213
+ @attributes = {}.merge(reloaded || {})
214
+ self.associations.keys.each { |association_name| unmemoize(association_name) }; self
215
+ end
216
+
217
+ # Remove a child document from this parent +Document+. Will reset the
218
+ # memoized association and notify the parent of the change.
219
+ def remove(child)
220
+ name = child.association_name
221
+ reset(name) { @attributes.remove(name, child.raw_attributes) }
222
+ notify
223
+ end
224
+
225
+ # Return the root +Document+ in the object graph. If the current +Document+
226
+ # is the root object in the graph it will return self.
227
+ def _root
228
+ object = self
229
+ while (object._parent) do object = object._parent; end
230
+ object || self
231
+ end
232
+
233
+ # Return an array with this +Document+ only in it.
234
+ def to_a
235
+ [ self ]
236
+ end
237
+
238
+ # Return this document as a JSON string. Nothing special is required here
239
+ # since Mongoid bubbles up all the child associations to the parent
240
+ # attribute +Hash+ using observers throughout the +Document+ lifecycle.
241
+ #
242
+ # Example:
243
+ #
244
+ # <tt>person.to_json</tt>
245
+ def to_json(options = nil)
246
+ attributes.to_json(options)
247
+ end
248
+
249
+ # Return an object to be encoded into a JSON string.
250
+ # Used by Rails 3's object->JSON chain to create JSON
251
+ # in a backend-agnostic way
252
+ #
253
+ # Example:
254
+ #
255
+ # <tt>person.as_json</tt>
256
+ def as_json(options = nil)
257
+ attributes
258
+ end
259
+
260
+ # Return this document as an object to be encoded as JSON,
261
+ # with any particular items modified on a per-encoder basis.
262
+ # Nothing special is required here since Mongoid bubbles up
263
+ # all the child associations to the parent attribute +Hash+
264
+ # using observers throughout the +Document+ lifecycle.
265
+ #
266
+ # Example:
267
+ #
268
+ # <tt>person.encode_json(encoder)</tt>
269
+ def encode_json(encoder)
270
+ attributes
271
+ end
272
+
273
+ # Returns the id of the Document, used in Rails compatibility.
274
+ def to_param
275
+ id
276
+ end
277
+
278
+ # Observe a notify call from a child +Document+. This will either update
279
+ # existing attributes on the +Document+ or clear them out for the child if
280
+ # the clear boolean is provided.
281
+ #
282
+ # Options:
283
+ #
284
+ # child: The child +Document+ that sent the notification.
285
+ # clear: Will clear out the child's attributes if set to true.
286
+ #
287
+ # This will also cause the observing +Document+ to notify it's parent if
288
+ # there is any.
289
+ def observe(child, clear = false)
290
+ name = child.association_name
291
+ attrs = child.instance_variable_get(:@attributes)
292
+ if clear
293
+ @attributes.delete(name)
294
+ else
295
+ @attributes.insert(name, attrs) unless @attributes[name] && @attributes[name].include?(attrs)
296
+ end
297
+ notify
298
+ end
299
+
300
+ protected
301
+ # apply default values to attributes - calling procs as required
302
+ def attributes_with_defaults(attributes = {})
303
+ default_values = defaults
304
+ default_values.each_pair do |key, val|
305
+ default_values[key] = val.call if val.respond_to?(:call)
306
+ end
307
+ default_values.merge(attributes)
308
+ end
309
+ end
310
+ end
311
+ end
@@ -0,0 +1,108 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when querying the database for a document by a specific id which
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>
12
+ class DocumentNotFound < RuntimeError
13
+ def initialize(klass, ids)
14
+ @klass, @identifier = klass, ids.is_a?(Array) ? ids.join(", ") : ids
15
+ end
16
+ def message
17
+ "Document not found for class #{@klass} and id(s) #{@identifier}"
18
+ end
19
+ end
20
+
21
+ # Raised when invalid options are passed into a constructor or method.
22
+ #
23
+ # Example:
24
+ #
25
+ # <tt>InvalidOptions.new</tt>
26
+ class InvalidOptions < RuntimeError; end
27
+
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
43
+
44
+ # Raised when the database version is not supported by Mongoid.
45
+ #
46
+ # Example:
47
+ #
48
+ # <tt>UnsupportedVersion.new(Mongo::ServerVersion.new("1.3.1"))</tt>
49
+ class UnsupportedVersion < RuntimeError
50
+ def initialize(version)
51
+ @version = version
52
+ end
53
+ def message
54
+ "MongoDB #{@version} not supported, please upgrade to #{Mongoid::MONGODB_VERSION}"
55
+ end
56
+ end
57
+
58
+ # Raised when a persisence method ending in ! fails validation. The message
59
+ # will contain the full error messages from the +Document+ in question.
60
+ #
61
+ # Example:
62
+ #
63
+ # <tt>Validations.new(person.errors)</tt>
64
+ class Validations < RuntimeError
65
+ def initialize(errors)
66
+ @errors = errors
67
+ end
68
+ def message
69
+ "Validation Failed: #{@errors.full_messages.join(", ")}"
70
+ end
71
+ end
72
+
73
+ # This error is raised when trying to access a Mongo::Collection from an
74
+ # embedded document.
75
+ #
76
+ # Example:
77
+ #
78
+ # <tt>InvalidCollection.new(Address)</tt>
79
+ class InvalidCollection < RuntimeError
80
+ def initialize(klass)
81
+ @klass = klass
82
+ end
83
+ def message
84
+ "Access to the collection for #{@klass.name} is not allowed " +
85
+ "since it is an embedded document, please access a collection from " +
86
+ "the root document"
87
+ end
88
+ end
89
+
90
+ # This error is raised when trying to create a field that conflicts with
91
+ # a Mongoid internal attribute or method.
92
+ #
93
+ # Example:
94
+ #
95
+ # <tt>InvalidField.new('collection')</tt>
96
+ class InvalidField < RuntimeError
97
+ def initialize(name)
98
+ @name = name
99
+ end
100
+ def message
101
+ "Defining a field named '#{@name}' is not allowed. " +
102
+ "Do not define fields that conflict with Mongoid internal attributes " +
103
+ "or method names. Use Document#instance_methods to see what " +
104
+ "names this includes."
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,101 @@
1
+ # encoding: utf-8
2
+ require "mongoid/extensions/time_conversions"
3
+ require "mongoid/extensions/array/accessors"
4
+ require "mongoid/extensions/array/aliasing"
5
+ require "mongoid/extensions/array/assimilation"
6
+ require "mongoid/extensions/array/conversions"
7
+ require "mongoid/extensions/array/parentization"
8
+ require "mongoid/extensions/big_decimal/conversions"
9
+ require "mongoid/extensions/binary/conversions"
10
+ require "mongoid/extensions/boolean/conversions"
11
+ require "mongoid/extensions/date/conversions"
12
+ require "mongoid/extensions/datetime/conversions"
13
+ require "mongoid/extensions/float/conversions"
14
+ require "mongoid/extensions/hash/accessors"
15
+ require "mongoid/extensions/hash/assimilation"
16
+ require "mongoid/extensions/hash/conversions"
17
+ require "mongoid/extensions/hash/criteria_helpers"
18
+ require "mongoid/extensions/hash/scoping"
19
+ require "mongoid/extensions/integer/conversions"
20
+ require "mongoid/extensions/nil/assimilation"
21
+ require "mongoid/extensions/object/conversions"
22
+ require "mongoid/extensions/proc/scoping"
23
+ require "mongoid/extensions/string/conversions"
24
+ require "mongoid/extensions/string/inflections"
25
+ require "mongoid/extensions/symbol/inflections"
26
+ require "mongoid/extensions/objectid/conversions"
27
+
28
+ class Array #:nodoc
29
+ include Mongoid::Extensions::Array::Accessors
30
+ include Mongoid::Extensions::Array::Assimilation
31
+ include Mongoid::Extensions::Array::Conversions
32
+ include Mongoid::Extensions::Array::Parentization
33
+ end
34
+
35
+ class BigDecimal #:nodoc
36
+ extend Mongoid::Extensions::BigDecimal::Conversions
37
+ end
38
+
39
+ class Binary #:nodoc
40
+ extend Mongoid::Extensions::Binary::Conversions
41
+ end
42
+
43
+ class Boolean #:nodoc
44
+ extend Mongoid::Extensions::Boolean::Conversions
45
+ end
46
+
47
+ class DateTime #:nodoc
48
+ extend Mongoid::Extensions::TimeConversions
49
+ extend Mongoid::Extensions::DateTime::Conversions
50
+ end
51
+
52
+ class Date #:nodoc
53
+ extend Mongoid::Extensions::TimeConversions
54
+ extend Mongoid::Extensions::Date::Conversions
55
+ end
56
+
57
+ class Float #:nodoc
58
+ extend Mongoid::Extensions::Float::Conversions
59
+ end
60
+
61
+ class Hash #:nodoc
62
+ include Mongoid::Extensions::Hash::Accessors
63
+ include Mongoid::Extensions::Hash::Assimilation
64
+ include Mongoid::Extensions::Hash::CriteriaHelpers
65
+ include Mongoid::Extensions::Hash::Scoping
66
+ include Mongoid::Extensions::Hash::Conversions
67
+ end
68
+
69
+ class Integer #:nodoc
70
+ extend Mongoid::Extensions::Integer::Conversions
71
+ end
72
+
73
+ class NilClass #:nodoc
74
+ include Mongoid::Extensions::Nil::Assimilation
75
+ end
76
+
77
+ class Object #:nodoc:
78
+ include Mongoid::Extensions::Object::Conversions
79
+ end
80
+
81
+ class Proc #:nodoc:
82
+ include Mongoid::Extensions::Proc::Scoping
83
+ end
84
+
85
+ class String #:nodoc
86
+ include Mongoid::Extensions::String::Inflections
87
+ extend Mongoid::Extensions::String::Conversions
88
+ end
89
+
90
+ class Symbol #:nodoc
91
+ remove_method :size if instance_methods.include? :size # temporal fix for ruby 1.9
92
+ include Mongoid::Extensions::Symbol::Inflections
93
+ end
94
+
95
+ class Time #:nodoc
96
+ extend Mongoid::Extensions::TimeConversions
97
+ end
98
+
99
+ class BSON::ObjectId #:nodoc
100
+ extend Mongoid::Extensions::ObjectId::Conversions
101
+ end