mongoid 2.0.0.beta.20 → 2.0.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. data/README.rdoc +8 -0
  2. data/Rakefile +51 -0
  3. data/lib/config/locales/nl.yml +39 -0
  4. data/lib/config/locales/ro.yml +1 -1
  5. data/lib/mongoid.rb +17 -17
  6. data/lib/mongoid/atomicity.rb +54 -22
  7. data/lib/mongoid/attributes.rb +145 -125
  8. data/lib/mongoid/callbacks.rb +7 -2
  9. data/lib/mongoid/collection.rb +49 -32
  10. data/lib/mongoid/collections.rb +0 -1
  11. data/lib/mongoid/components.rb +34 -29
  12. data/lib/mongoid/config.rb +207 -193
  13. data/lib/mongoid/config/database.rb +167 -0
  14. data/lib/mongoid/contexts.rb +2 -5
  15. data/lib/mongoid/contexts/enumerable.rb +30 -4
  16. data/lib/mongoid/contexts/ids.rb +2 -2
  17. data/lib/mongoid/contexts/mongo.rb +30 -5
  18. data/lib/mongoid/copyable.rb +44 -0
  19. data/lib/mongoid/criteria.rb +110 -56
  20. data/lib/mongoid/criterion/creational.rb +34 -0
  21. data/lib/mongoid/criterion/destructive.rb +37 -0
  22. data/lib/mongoid/criterion/exclusion.rb +3 -1
  23. data/lib/mongoid/criterion/inclusion.rb +59 -64
  24. data/lib/mongoid/criterion/inspection.rb +22 -0
  25. data/lib/mongoid/criterion/optional.rb +42 -54
  26. data/lib/mongoid/criterion/selector.rb +9 -0
  27. data/lib/mongoid/default_scope.rb +28 -0
  28. data/lib/mongoid/deprecation.rb +5 -5
  29. data/lib/mongoid/dirty.rb +4 -5
  30. data/lib/mongoid/document.rb +161 -114
  31. data/lib/mongoid/extensions.rb +7 -11
  32. data/lib/mongoid/extensions/array/parentization.rb +2 -2
  33. data/lib/mongoid/extensions/date/conversions.rb +1 -1
  34. data/lib/mongoid/extensions/hash/conversions.rb +0 -23
  35. data/lib/mongoid/extensions/nil/collectionization.rb +12 -0
  36. data/lib/mongoid/extensions/object/reflections.rb +17 -0
  37. data/lib/mongoid/extensions/object/yoda.rb +27 -0
  38. data/lib/mongoid/extensions/string/conversions.rb +23 -4
  39. data/lib/mongoid/extensions/time_conversions.rb +4 -4
  40. data/lib/mongoid/field.rb +30 -19
  41. data/lib/mongoid/fields.rb +15 -5
  42. data/lib/mongoid/finders.rb +19 -11
  43. data/lib/mongoid/hierarchy.rb +34 -28
  44. data/lib/mongoid/identity.rb +62 -20
  45. data/lib/mongoid/inspection.rb +58 -0
  46. data/lib/mongoid/matchers.rb +20 -0
  47. data/lib/mongoid/multi_database.rb +11 -0
  48. data/lib/mongoid/nested_attributes.rb +41 -0
  49. data/lib/mongoid/paranoia.rb +3 -4
  50. data/lib/mongoid/paths.rb +1 -1
  51. data/lib/mongoid/persistence.rb +89 -90
  52. data/lib/mongoid/persistence/command.rb +20 -4
  53. data/lib/mongoid/persistence/insert.rb +13 -11
  54. data/lib/mongoid/persistence/insert_embedded.rb +8 -6
  55. data/lib/mongoid/persistence/remove.rb +6 -4
  56. data/lib/mongoid/persistence/remove_all.rb +6 -4
  57. data/lib/mongoid/persistence/remove_embedded.rb +8 -6
  58. data/lib/mongoid/persistence/update.rb +12 -10
  59. data/lib/mongoid/railtie.rb +2 -2
  60. data/lib/mongoid/railties/database.rake +10 -9
  61. data/lib/mongoid/relations.rb +104 -0
  62. data/lib/mongoid/relations/accessors.rb +154 -0
  63. data/lib/mongoid/relations/auto_save.rb +34 -0
  64. data/lib/mongoid/relations/binding.rb +24 -0
  65. data/lib/mongoid/relations/bindings.rb +9 -0
  66. data/lib/mongoid/relations/bindings/embedded/in.rb +77 -0
  67. data/lib/mongoid/relations/bindings/embedded/many.rb +93 -0
  68. data/lib/mongoid/relations/bindings/embedded/one.rb +65 -0
  69. data/lib/mongoid/relations/bindings/referenced/in.rb +78 -0
  70. data/lib/mongoid/relations/bindings/referenced/many.rb +93 -0
  71. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +94 -0
  72. data/lib/mongoid/relations/bindings/referenced/one.rb +63 -0
  73. data/lib/mongoid/relations/builder.rb +41 -0
  74. data/lib/mongoid/relations/builders.rb +79 -0
  75. data/lib/mongoid/relations/builders/embedded/in.rb +25 -0
  76. data/lib/mongoid/relations/builders/embedded/many.rb +32 -0
  77. data/lib/mongoid/relations/builders/embedded/one.rb +26 -0
  78. data/lib/mongoid/relations/builders/nested_attributes/many.rb +116 -0
  79. data/lib/mongoid/relations/builders/nested_attributes/one.rb +135 -0
  80. data/lib/mongoid/relations/builders/referenced/in.rb +32 -0
  81. data/lib/mongoid/relations/builders/referenced/many.rb +26 -0
  82. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +29 -0
  83. data/lib/mongoid/relations/builders/referenced/one.rb +30 -0
  84. data/lib/mongoid/relations/cascading.rb +55 -0
  85. data/lib/mongoid/relations/cascading/delete.rb +19 -0
  86. data/lib/mongoid/relations/cascading/destroy.rb +19 -0
  87. data/lib/mongoid/relations/cascading/nullify.rb +18 -0
  88. data/lib/mongoid/relations/cascading/strategy.rb +26 -0
  89. data/lib/mongoid/relations/cyclic.rb +97 -0
  90. data/lib/mongoid/relations/embedded/in.rb +172 -0
  91. data/lib/mongoid/relations/embedded/many.rb +450 -0
  92. data/lib/mongoid/relations/embedded/one.rb +169 -0
  93. data/lib/mongoid/relations/macros.rb +302 -0
  94. data/lib/mongoid/relations/many.rb +185 -0
  95. data/lib/mongoid/relations/metadata.rb +529 -0
  96. data/lib/mongoid/relations/nested_builder.rb +52 -0
  97. data/lib/mongoid/relations/one.rb +29 -0
  98. data/lib/mongoid/relations/polymorphic.rb +54 -0
  99. data/lib/mongoid/relations/proxy.rb +122 -0
  100. data/lib/mongoid/relations/referenced/in.rb +214 -0
  101. data/lib/mongoid/relations/referenced/many.rb +358 -0
  102. data/lib/mongoid/relations/referenced/many_to_many.rb +379 -0
  103. data/lib/mongoid/relations/referenced/one.rb +204 -0
  104. data/lib/mongoid/relations/reflections.rb +45 -0
  105. data/lib/mongoid/safe.rb +11 -1
  106. data/lib/mongoid/safety.rb +122 -97
  107. data/lib/mongoid/scope.rb +14 -9
  108. data/lib/mongoid/state.rb +37 -3
  109. data/lib/mongoid/timestamps.rb +11 -0
  110. data/lib/mongoid/validations.rb +42 -3
  111. data/lib/mongoid/validations/associated.rb +8 -5
  112. data/lib/mongoid/validations/uniqueness.rb +23 -2
  113. data/lib/mongoid/version.rb +1 -1
  114. data/lib/mongoid/versioning.rb +25 -16
  115. data/lib/rails/generators/mongoid/model/templates/model.rb +3 -1
  116. metadata +95 -80
  117. data/lib/mongoid/associations.rb +0 -364
  118. data/lib/mongoid/associations/embedded_in.rb +0 -74
  119. data/lib/mongoid/associations/embeds_many.rb +0 -299
  120. data/lib/mongoid/associations/embeds_one.rb +0 -111
  121. data/lib/mongoid/associations/foreign_key.rb +0 -35
  122. data/lib/mongoid/associations/meta_data.rb +0 -38
  123. data/lib/mongoid/associations/options.rb +0 -78
  124. data/lib/mongoid/associations/proxy.rb +0 -60
  125. data/lib/mongoid/associations/referenced_in.rb +0 -70
  126. data/lib/mongoid/associations/references_many.rb +0 -254
  127. data/lib/mongoid/associations/references_many_as_array.rb +0 -128
  128. data/lib/mongoid/associations/references_one.rb +0 -104
  129. data/lib/mongoid/extensions/array/accessors.rb +0 -17
  130. data/lib/mongoid/extensions/array/assimilation.rb +0 -26
  131. data/lib/mongoid/extensions/hash/accessors.rb +0 -42
  132. data/lib/mongoid/extensions/hash/assimilation.rb +0 -40
  133. data/lib/mongoid/extensions/nil/assimilation.rb +0 -17
  134. data/lib/mongoid/memoization.rb +0 -33
@@ -1,26 +1,31 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid #:nodoc:
3
- class Scope #:nodoc:
4
-
3
+ # This module handles behaviour for defining scopes on classes.
4
+ class Scope
5
5
  attr_reader :conditions, :extensions
6
6
 
7
7
  # Create the new +Scope+. If a block is passed in, this Scope will store
8
8
  # the block for future calls to #extend.
9
9
  #
10
- # Options:
11
- #
12
- # conditions: A +Hash+ of conditions.
13
- # block: A +block+ of extension methods (optional)
10
+ # @example Create a new scope.
11
+ # Scope.new(:title => "Sir")
14
12
  #
13
+ # @param [ Hash ] conditions The scoping limitations.
15
14
  def initialize(conditions = {}, &block)
16
15
  @conditions = conditions
17
16
  @extensions = Module.new(&block) if block_given?
18
17
  end
19
18
 
19
+ # Extend a supplied criteria.
20
+ #
21
+ # @example Extend the criteria.
22
+ # scope.extend(criteria)
23
+ #
24
+ # @param [ Criteria } criteria A mongoid criteria to extend.
25
+ #
26
+ # @return [ Criteria ] The new criteria object.
20
27
  def extend(criteria)
21
- @extensions ? criteria.extend(@extensions) : criteria
28
+ extensions ? criteria.extend(extensions) : criteria
22
29
  end
23
-
24
30
  end
25
31
  end
26
-
@@ -1,30 +1,64 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid #:nodoc:
3
- module State #:nodoc:
3
+
4
+ # This module contains the behaviour for getting the various states a
5
+ # document can transition through.
6
+ module State
7
+
4
8
  # Returns true if the +Document+ has not been persisted to the database,
5
9
  # false if it has. This is determined by the variable @new_record
6
10
  # and NOT if the object has an id.
11
+ #
12
+ # @example Is the document new?
13
+ # person.new_record?
14
+ #
15
+ # @return [ true, false ] True if new, false if not.
7
16
  def new_record?
8
17
  @new_record == true
9
18
  end
19
+ alias :new? :new_record?
10
20
 
11
21
  # Sets the new_record boolean - used after document is saved.
22
+ #
23
+ # @example Set whether the document is new.
24
+ # person.new_record = true
25
+ #
26
+ # @param [ true, false ] saved The value to set for new_record.
27
+ #
28
+ # @return [ true, false ] The new_record value.
12
29
  def new_record=(saved)
13
30
  @new_record = saved
14
31
  end
15
32
 
16
33
  # Checks if the document has been saved to the database.
34
+ #
35
+ # @example Is the document persisted?
36
+ # person.persisted?
37
+ #
38
+ # @return [ true, false ] True if persisted, false if not.
17
39
  def persisted?
18
40
  !new_record?
19
41
  end
20
42
 
21
- # Returns true if the +Document+ has been succesfully destroyed, and false if it hasn't.
22
- # This is determined by the variable @destroyed and NOT by checking the database.
43
+ # Returns true if the +Document+ has been succesfully destroyed, and false
44
+ # if it hasn't. This is determined by the variable @destroyed and NOT
45
+ # by checking the database.
46
+ #
47
+ # @example Is the document destroyed?
48
+ # person.destroyed?
49
+ #
50
+ # @return [ true, false ] True if destroyed, false if not.
23
51
  def destroyed?
24
52
  @destroyed == true
25
53
  end
54
+ alias :deleted? :destroyed?
26
55
 
27
56
  # Sets the destroyed boolean - used after document is destroyed.
57
+ #
58
+ # @example Set the destroyed flag.
59
+ # person.destroyed = true
60
+ #
61
+ # @return [ true, false ] The value set for destroyed.
28
62
  def destroyed=(destroyed)
29
63
  @destroyed = destroyed && true
30
64
  end
@@ -1,10 +1,15 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid #:nodoc:
3
+
4
+ # This module handles the behaviour for setting up document created at and
5
+ # updated at timestamps.
3
6
  module Timestamps
4
7
  extend ActiveSupport::Concern
8
+
5
9
  included do
6
10
  field :created_at, :type => Time
7
11
  field :updated_at, :type => Time
12
+
8
13
  set_callback :create, :before, :set_created_at
9
14
  set_callback :save, :before, :set_updated_at
10
15
 
@@ -14,12 +19,18 @@ module Mongoid #:nodoc:
14
19
 
15
20
  # Update the created_at field on the Document to the current time. This is
16
21
  # only called on create.
22
+ #
23
+ # @example Set the created at time.
24
+ # person.set_created_at
17
25
  def set_created_at
18
26
  self.created_at = Time.now.utc if !created_at
19
27
  end
20
28
 
21
29
  # Update the updated_at field on the Document to the current time.
22
30
  # This is only called on create and on save.
31
+ #
32
+ # @example Set the updated at time.
33
+ # person.set_updated_at
23
34
  def set_updated_at
24
35
  self.updated_at = Time.now.utc
25
36
  end
@@ -3,19 +3,39 @@ require "mongoid/validations/associated"
3
3
  require "mongoid/validations/uniqueness"
4
4
 
5
5
  module Mongoid #:nodoc:
6
+
6
7
  # This module provides additional validations that ActiveModel does not
7
- # provide: validates_associated and validates_uniqueness_of
8
+ # provide: validates_associated and validates_uniqueness_of.
8
9
  module Validations
9
10
  extend ActiveSupport::Concern
11
+
10
12
  included do
11
13
  include ActiveModel::Validations
14
+
15
+ # Overrides the default ActiveModel behaviour since we need to handle
16
+ # validations of relations slightly different than just calling the
17
+ # getter.
18
+ #
19
+ # @todo Durran: Why does moving the ActiveModel::Validations include
20
+ # statement outside of the block bomb the test suite. This feels dirty.
21
+ #
22
+ # @example Read the value.
23
+ # person.read_attribute_for_validation(:addresses)
24
+ #
25
+ # @param [ Symbol ] attr The name of the field or relation.
26
+ #
27
+ # @return [ Object ] The value of the field or the relation.
28
+ def read_attribute_for_validation(attr)
29
+ relations[attr.to_s] ? send(attr, false, :continue => false) : send(attr)
30
+ end
12
31
  end
13
32
 
14
33
  module ClassMethods #:nodoc:
34
+
15
35
  # Validates whether or not an association is valid or not. Will correctly
16
36
  # handle has one and has many associations.
17
37
  #
18
- # Example:
38
+ # @example
19
39
  #
20
40
  # class Person
21
41
  # include Mongoid::Document
@@ -24,6 +44,8 @@ module Mongoid #:nodoc:
24
44
  #
25
45
  # validates_associated :name, :addresses
26
46
  # end
47
+ #
48
+ # @param [ Array ] *args The arguments to pass to the validator.
27
49
  def validates_associated(*args)
28
50
  validates_with(AssociatedValidator, _merge_attributes(args))
29
51
  end
@@ -31,7 +53,7 @@ module Mongoid #:nodoc:
31
53
  # Validates whether or not a field is unique against the documents in the
32
54
  # database.
33
55
  #
34
- # Example:
56
+ # @example
35
57
  #
36
58
  # class Person
37
59
  # include Mongoid::Document
@@ -39,9 +61,26 @@ module Mongoid #:nodoc:
39
61
  #
40
62
  # validates_uniqueness_of :title
41
63
  # end
64
+ #
65
+ # @param [ Array ] *args The arguments to pass to the validator.
42
66
  def validates_uniqueness_of(*args)
43
67
  validates_with(UniquenessValidator, _merge_attributes(args))
44
68
  end
69
+
70
+ protected
71
+
72
+ # Adds an associated validator for the relation if the validate option
73
+ # was not provided or set to true.
74
+ #
75
+ # @example Set up validation.
76
+ # Person.validate_relation(metadata)
77
+ #
78
+ # @param [ Metadata ] metadata The relation metadata.
79
+ #
80
+ # @since 2.0.0.rc.1
81
+ def validate_relation(metadata)
82
+ validates_associated(metadata.name) if metadata.validate?
83
+ end
45
84
  end
46
85
  end
47
86
  end
@@ -1,10 +1,11 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid #:nodoc:
3
3
  module Validations #:nodoc:
4
+
4
5
  # Validates whether or not an association is valid or not. Will correctly
5
6
  # handle has one and has many associations.
6
7
  #
7
- # Example:
8
+ # @example Set up the association validations.
8
9
  #
9
10
  # class Person
10
11
  # include Mongoid::Document
@@ -19,12 +20,14 @@ module Mongoid #:nodoc:
19
20
  # valid. If neither is true then the appropriate errors will be added to
20
21
  # the parent document.
21
22
  #
22
- # Example:
23
+ # @example Validate the association.
24
+ # validator.validate_each(document, :name, name)
23
25
  #
24
- # <tt>validator.validate_each(document, :name, name)</tt>
26
+ # @param [ Document ] document The document to validate.
27
+ # @param [ Symbol ] attribute The relation to validate.
28
+ # @param [ Object ] value The value of the relation.
25
29
  def validate_each(document, attribute, value)
26
- values = value.is_a?(Array) ? value : [ value ]
27
- return if values.collect { |doc| doc.nil? || doc.valid? }.all?
30
+ return if value.to_a.collect { |doc| doc.nil? || doc.valid? }.all?
28
31
  document.errors.add(attribute, :invalid, options.merge(:value => value))
29
32
  end
30
33
  end
@@ -1,10 +1,11 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid #:nodoc:
3
3
  module Validations #:nodoc:
4
+
4
5
  # Validates whether or not a field is unique against the documents in the
5
6
  # database.
6
7
  #
7
- # Example:
8
+ # @example Define the uniqueness validator.
8
9
  #
9
10
  # class Person
10
11
  # include Mongoid::Document
@@ -13,15 +14,26 @@ module Mongoid #:nodoc:
13
14
  # validates_uniqueness_of :title
14
15
  # end
15
16
  class UniquenessValidator < ActiveModel::EachValidator
17
+
16
18
  # Unfortunately, we have to tie Uniqueness validators to a class.
17
19
  def setup(klass)
18
20
  @klass = klass
19
21
  end
20
22
 
23
+ # Validate the document for uniqueness violations.
24
+ #
25
+ # @example Validate the document.
26
+ # validate_each(person, :title, "Sir")
27
+ #
28
+ # @param [ Document ] document The document to validate.
29
+ # @param [ Symbol ] attribute The field to validate on.
30
+ # @param [ Object ] value The value of the field.
31
+ #
32
+ # @todo Durran: This method needs refactoring.
21
33
  def validate_each(document, attribute, value)
22
34
  if document.embedded?
23
35
  return if document._parent.nil?
24
- criteria = document._parent.send(document.association_name)
36
+ criteria = document._parent.send(document.metadata.name)
25
37
  # If the parent document embeds_one, no need to validate uniqueness
26
38
  return if criteria.is_a?(Mongoid::Document)
27
39
  criteria = criteria.where(attribute => unique_search_value(value), :_id => {'$ne' => document._id})
@@ -45,6 +57,15 @@ module Mongoid #:nodoc:
45
57
  end
46
58
 
47
59
  protected
60
+
61
+ # Determine if the primary key has changed on the document.
62
+ #
63
+ # @example Has the key changed?
64
+ # key_changed?(document)
65
+ #
66
+ # @param [ Document ] document The document to check.
67
+ #
68
+ # @return [ true, false ] True if changed, false if not.
48
69
  def key_changed?(document)
49
70
  (document.primary_key || {}).each do |key|
50
71
  return true if document.send("#{key}_changed?")
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid #:nodoc
3
- VERSION = "2.0.0.beta.20"
3
+ VERSION = "2.0.0.rc.1"
4
4
  end
@@ -1,5 +1,6 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid #:nodoc:
3
+
3
4
  # Include this module to get automatic versioning of root level documents.
4
5
  # This will add a version field to the +Document+ and a has_many association
5
6
  # with all the versions contained in it.
@@ -8,34 +9,42 @@ module Mongoid #:nodoc:
8
9
 
9
10
  included do
10
11
  field :version, :type => Integer, :default => 1
11
- embeds_many :versions, :class_name => self.name
12
+ embeds_many :versions, :class_name => self.name, :validate => false
12
13
  set_callback :save, :before, :revise
13
- end
14
14
 
15
- module ClassMethods #:nodoc:
16
- attr_accessor :version_max
17
-
18
- # the number of max_version should >= 0
19
- def max_versions(number)
20
- self.version_max = number.to_i
21
- end
15
+ delegate :version_max, :to => "self.class"
22
16
  end
23
17
 
24
18
  # Create a new version of the +Document+. This will load the previous
25
19
  # document from the database and set it as the next version before saving
26
20
  # the current document. It then increments the version number. If a #max_versions
27
21
  # limit is set in the model and it's exceeded, the oldest version gets discarded.
22
+ #
23
+ # @example Revise the document.
24
+ # person.revise
28
25
  def revise
29
26
  last_version = self.class.first(:conditions => { :_id => id, :version => version })
30
27
  if last_version
31
- old_versions = ( @attributes['versions'].duplicable? ? @attributes['versions'].dup : nil )
32
- self.versions << last_version.clone
33
- if self.class.version_max.present? && ( self.class.version_max >= 0 ) && ( self.versions.length > self.class.version_max )
34
- self.versions.shift
35
- @attributes['versions'].shift
36
- end
28
+ versions.target << last_version.clone
29
+ versions.shift if version_max.present? && versions.length > version_max
37
30
  self.version = (version || 1 ) + 1
38
- @modifications["versions"] = [ old_versions, @attributes['versions'] ] if @modifications
31
+ @modifications["versions"] = [ nil, versions.to_hash ] if @modifications
32
+ end
33
+ end
34
+
35
+ module ClassMethods #:nodoc:
36
+ attr_accessor :version_max
37
+
38
+ # Sets the maximum number of versions to store.
39
+ #
40
+ # @example Set the maximum.
41
+ # Person.max_versions(5)
42
+ #
43
+ # @param [ Integer ] number The maximum number to store.
44
+ #
45
+ # @return [ Integer ] The max number of versions.
46
+ def max_versions(number)
47
+ self.version_max = number.to_i
39
48
  end
40
49
  end
41
50
  end
@@ -5,7 +5,9 @@ class <%= class_name %><%= " < #{options[:parent].classify}" if options[:parent]
5
5
  <% if options[:timestamps] -%>
6
6
  include Mongoid::Timestamps
7
7
  <% end -%>
8
- <%= 'include Mongoid::Versioning' if options[:versioning] -%>
8
+ <% if options[:versioning] -%>
9
+ include Mongoid::Versioning
10
+ <% end -%>
9
11
  <% attributes.reject{|attr| attr.reference?}.each do |attribute| -%>
10
12
  field :<%= attribute.name %>, :type => <%= attribute.type_class %>
11
13
  <% end -%>
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid
3
3
  version: !ruby/object:Gem::Version
4
- hash: 62196427
5
4
  prerelease: true
6
5
  segments:
7
6
  - 2
8
7
  - 0
9
8
  - 0
10
- - beta
11
- - 20
12
- version: 2.0.0.beta.20
9
+ - rc
10
+ - 1
11
+ version: 2.0.0.rc.1
13
12
  platform: ruby
14
13
  authors:
15
14
  - Durran Jordan
@@ -17,149 +16,126 @@ autorequire:
17
16
  bindir: bin
18
17
  cert_chain: []
19
18
 
20
- date: 2010-11-02 00:00:00 -07:00
19
+ date: 2011-01-09 00:00:00 +01:00
21
20
  default_executable:
22
21
  dependencies:
23
22
  - !ruby/object:Gem::Dependency
24
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ name: activemodel
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- hash: 7
30
29
  segments:
31
30
  - 3
32
31
  - 0
33
32
  version: "3.0"
34
- requirement: *id001
35
33
  type: :runtime
36
- name: activemodel
37
34
  prerelease: false
35
+ version_requirements: *id001
38
36
  - !ruby/object:Gem::Dependency
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
37
+ name: tzinfo
38
+ requirement: &id002 !ruby/object:Gem::Requirement
40
39
  none: false
41
40
  requirements:
42
41
  - - ~>
43
42
  - !ruby/object:Gem::Version
44
- hash: 63
45
43
  segments:
46
44
  - 0
47
45
  - 3
48
46
  - 22
49
47
  version: 0.3.22
50
- requirement: *id002
51
48
  type: :runtime
52
- name: tzinfo
53
49
  prerelease: false
50
+ version_requirements: *id002
54
51
  - !ruby/object:Gem::Dependency
55
- version_requirements: &id003 !ruby/object:Gem::Requirement
52
+ name: will_paginate
53
+ requirement: &id003 !ruby/object:Gem::Requirement
56
54
  none: false
57
55
  requirements:
58
56
  - - ~>
59
57
  - !ruby/object:Gem::Version
60
- hash: 961915916
61
58
  segments:
62
59
  - 3
63
60
  - 0
64
61
  - pre
65
62
  version: 3.0.pre
66
- requirement: *id003
67
63
  type: :runtime
68
- name: will_paginate
69
64
  prerelease: false
65
+ version_requirements: *id003
70
66
  - !ruby/object:Gem::Dependency
71
- version_requirements: &id004 !ruby/object:Gem::Requirement
67
+ name: mongo
68
+ requirement: &id004 !ruby/object:Gem::Requirement
72
69
  none: false
73
70
  requirements:
74
71
  - - ~>
75
72
  - !ruby/object:Gem::Version
76
- hash: 13
77
73
  segments:
78
74
  - 1
79
75
  - 1
80
- version: "1.1"
81
- requirement: *id004
76
+ - 5
77
+ version: 1.1.5
82
78
  type: :runtime
83
- name: mongo
84
79
  prerelease: false
80
+ version_requirements: *id004
85
81
  - !ruby/object:Gem::Dependency
86
- version_requirements: &id005 !ruby/object:Gem::Requirement
82
+ name: bson_ext
83
+ requirement: &id005 !ruby/object:Gem::Requirement
87
84
  none: false
88
85
  requirements:
89
86
  - - ~>
90
87
  - !ruby/object:Gem::Version
91
- hash: 13
92
88
  segments:
93
89
  - 1
94
90
  - 1
95
- version: "1.1"
96
- requirement: *id005
91
+ - 5
92
+ version: 1.1.5
97
93
  type: :development
98
- name: bson_ext
99
94
  prerelease: false
95
+ version_requirements: *id005
100
96
  - !ruby/object:Gem::Dependency
101
- version_requirements: &id006 !ruby/object:Gem::Requirement
97
+ name: mocha
98
+ requirement: &id006 !ruby/object:Gem::Requirement
102
99
  none: false
103
100
  requirements:
104
101
  - - "="
105
102
  - !ruby/object:Gem::Version
106
- hash: 43
107
103
  segments:
108
104
  - 0
109
105
  - 9
110
106
  - 8
111
107
  version: 0.9.8
112
- requirement: *id006
113
108
  type: :development
114
- name: mocha
115
109
  prerelease: false
110
+ version_requirements: *id006
116
111
  - !ruby/object:Gem::Dependency
117
- version_requirements: &id007 !ruby/object:Gem::Requirement
112
+ name: rspec
113
+ requirement: &id007 !ruby/object:Gem::Requirement
118
114
  none: false
119
115
  requirements:
120
- - - "="
116
+ - - ~>
121
117
  - !ruby/object:Gem::Version
122
- hash: 13
123
118
  segments:
124
119
  - 2
125
- - 0
126
- - 1
127
- version: 2.0.1
128
- requirement: *id007
120
+ - 4
121
+ version: "2.4"
129
122
  type: :development
130
- name: rspec
131
123
  prerelease: false
124
+ version_requirements: *id007
132
125
  - !ruby/object:Gem::Dependency
133
- version_requirements: &id008 !ruby/object:Gem::Requirement
126
+ name: watchr
127
+ requirement: &id008 !ruby/object:Gem::Requirement
134
128
  none: false
135
129
  requirements:
136
130
  - - "="
137
131
  - !ruby/object:Gem::Version
138
- hash: 7
139
132
  segments:
140
133
  - 0
141
134
  - 6
142
135
  version: "0.6"
143
- requirement: *id008
144
- type: :development
145
- name: watchr
146
- prerelease: false
147
- - !ruby/object:Gem::Dependency
148
- version_requirements: &id009 !ruby/object:Gem::Requirement
149
- none: false
150
- requirements:
151
- - - "="
152
- - !ruby/object:Gem::Version
153
- hash: 29
154
- segments:
155
- - 0
156
- - 0
157
- - 1
158
- version: 0.0.1
159
- requirement: *id009
160
136
  type: :development
161
- name: ruby-debug-wrapper
162
137
  prerelease: false
138
+ version_requirements: *id008
163
139
  description: Mongoid is an ODM (Object Document Mapper) Framework for MongoDB, written in Ruby.
164
140
  email:
165
141
  - durran@gmail.com
@@ -178,24 +154,13 @@ files:
178
154
  - lib/config/locales/hu.yml
179
155
  - lib/config/locales/it.yml
180
156
  - lib/config/locales/kr.yml
157
+ - lib/config/locales/nl.yml
181
158
  - lib/config/locales/pl.yml
182
159
  - lib/config/locales/pt-br.yml
183
160
  - lib/config/locales/pt.yml
184
161
  - lib/config/locales/ro.yml
185
162
  - lib/config/locales/sv.yml
186
163
  - lib/config/locales/zh-CN.yml
187
- - lib/mongoid/associations/embedded_in.rb
188
- - lib/mongoid/associations/embeds_many.rb
189
- - lib/mongoid/associations/embeds_one.rb
190
- - lib/mongoid/associations/foreign_key.rb
191
- - lib/mongoid/associations/meta_data.rb
192
- - lib/mongoid/associations/options.rb
193
- - lib/mongoid/associations/proxy.rb
194
- - lib/mongoid/associations/referenced_in.rb
195
- - lib/mongoid/associations/references_many.rb
196
- - lib/mongoid/associations/references_many_as_array.rb
197
- - lib/mongoid/associations/references_one.rb
198
- - lib/mongoid/associations.rb
199
164
  - lib/mongoid/atomicity.rb
200
165
  - lib/mongoid/attributes.rb
201
166
  - lib/mongoid/callbacks.rb
@@ -206,6 +171,7 @@ files:
206
171
  - lib/mongoid/collections/slaves.rb
207
172
  - lib/mongoid/collections.rb
208
173
  - lib/mongoid/components.rb
174
+ - lib/mongoid/config/database.rb
209
175
  - lib/mongoid/config.rb
210
176
  - lib/mongoid/contexts/enumerable/sort.rb
211
177
  - lib/mongoid/contexts/enumerable.rb
@@ -213,13 +179,18 @@ files:
213
179
  - lib/mongoid/contexts/mongo.rb
214
180
  - lib/mongoid/contexts/paging.rb
215
181
  - lib/mongoid/contexts.rb
182
+ - lib/mongoid/copyable.rb
216
183
  - lib/mongoid/criteria.rb
217
184
  - lib/mongoid/criterion/complex.rb
185
+ - lib/mongoid/criterion/creational.rb
186
+ - lib/mongoid/criterion/destructive.rb
218
187
  - lib/mongoid/criterion/exclusion.rb
219
188
  - lib/mongoid/criterion/inclusion.rb
189
+ - lib/mongoid/criterion/inspection.rb
220
190
  - lib/mongoid/criterion/optional.rb
221
191
  - lib/mongoid/criterion/selector.rb
222
192
  - lib/mongoid/cursor.rb
193
+ - lib/mongoid/default_scope.rb
223
194
  - lib/mongoid/deprecation.rb
224
195
  - lib/mongoid/dirty.rb
225
196
  - lib/mongoid/document.rb
@@ -234,8 +205,6 @@ files:
234
205
  - lib/mongoid/errors/unsupported_version.rb
235
206
  - lib/mongoid/errors/validations.rb
236
207
  - lib/mongoid/errors.rb
237
- - lib/mongoid/extensions/array/accessors.rb
238
- - lib/mongoid/extensions/array/assimilation.rb
239
208
  - lib/mongoid/extensions/array/conversions.rb
240
209
  - lib/mongoid/extensions/array/parentization.rb
241
210
  - lib/mongoid/extensions/big_decimal/conversions.rb
@@ -245,14 +214,14 @@ files:
245
214
  - lib/mongoid/extensions/datetime/conversions.rb
246
215
  - lib/mongoid/extensions/false_class/equality.rb
247
216
  - lib/mongoid/extensions/float/conversions.rb
248
- - lib/mongoid/extensions/hash/accessors.rb
249
- - lib/mongoid/extensions/hash/assimilation.rb
250
217
  - lib/mongoid/extensions/hash/conversions.rb
251
218
  - lib/mongoid/extensions/hash/criteria_helpers.rb
252
219
  - lib/mongoid/extensions/hash/scoping.rb
253
220
  - lib/mongoid/extensions/integer/conversions.rb
254
- - lib/mongoid/extensions/nil/assimilation.rb
221
+ - lib/mongoid/extensions/nil/collectionization.rb
255
222
  - lib/mongoid/extensions/object/conversions.rb
223
+ - lib/mongoid/extensions/object/reflections.rb
224
+ - lib/mongoid/extensions/object/yoda.rb
256
225
  - lib/mongoid/extensions/object_id/conversions.rb
257
226
  - lib/mongoid/extensions/proc/scoping.rb
258
227
  - lib/mongoid/extensions/set/conversions.rb
@@ -271,6 +240,7 @@ files:
271
240
  - lib/mongoid/hierarchy.rb
272
241
  - lib/mongoid/identity.rb
273
242
  - lib/mongoid/indexes.rb
243
+ - lib/mongoid/inspection.rb
274
244
  - lib/mongoid/javascript/functions.yml
275
245
  - lib/mongoid/javascript.rb
276
246
  - lib/mongoid/json.rb
@@ -288,12 +258,13 @@ files:
288
258
  - lib/mongoid/matchers/nin.rb
289
259
  - lib/mongoid/matchers/size.rb
290
260
  - lib/mongoid/matchers.rb
291
- - lib/mongoid/memoization.rb
292
261
  - lib/mongoid/modifiers/command.rb
293
262
  - lib/mongoid/modifiers/inc.rb
294
263
  - lib/mongoid/modifiers.rb
264
+ - lib/mongoid/multi_database.rb
295
265
  - lib/mongoid/multi_parameter_attributes.rb
296
266
  - lib/mongoid/named_scope.rb
267
+ - lib/mongoid/nested_attributes.rb
297
268
  - lib/mongoid/paranoia.rb
298
269
  - lib/mongoid/paths.rb
299
270
  - lib/mongoid/persistence/command.rb
@@ -307,6 +278,50 @@ files:
307
278
  - lib/mongoid/railtie.rb
308
279
  - lib/mongoid/railties/database.rake
309
280
  - lib/mongoid/railties/document.rb
281
+ - lib/mongoid/relations/accessors.rb
282
+ - lib/mongoid/relations/auto_save.rb
283
+ - lib/mongoid/relations/binding.rb
284
+ - lib/mongoid/relations/bindings/embedded/in.rb
285
+ - lib/mongoid/relations/bindings/embedded/many.rb
286
+ - lib/mongoid/relations/bindings/embedded/one.rb
287
+ - lib/mongoid/relations/bindings/referenced/in.rb
288
+ - lib/mongoid/relations/bindings/referenced/many.rb
289
+ - lib/mongoid/relations/bindings/referenced/many_to_many.rb
290
+ - lib/mongoid/relations/bindings/referenced/one.rb
291
+ - lib/mongoid/relations/bindings.rb
292
+ - lib/mongoid/relations/builder.rb
293
+ - lib/mongoid/relations/builders/embedded/in.rb
294
+ - lib/mongoid/relations/builders/embedded/many.rb
295
+ - lib/mongoid/relations/builders/embedded/one.rb
296
+ - lib/mongoid/relations/builders/nested_attributes/many.rb
297
+ - lib/mongoid/relations/builders/nested_attributes/one.rb
298
+ - lib/mongoid/relations/builders/referenced/in.rb
299
+ - lib/mongoid/relations/builders/referenced/many.rb
300
+ - lib/mongoid/relations/builders/referenced/many_to_many.rb
301
+ - lib/mongoid/relations/builders/referenced/one.rb
302
+ - lib/mongoid/relations/builders.rb
303
+ - lib/mongoid/relations/cascading/delete.rb
304
+ - lib/mongoid/relations/cascading/destroy.rb
305
+ - lib/mongoid/relations/cascading/nullify.rb
306
+ - lib/mongoid/relations/cascading/strategy.rb
307
+ - lib/mongoid/relations/cascading.rb
308
+ - lib/mongoid/relations/cyclic.rb
309
+ - lib/mongoid/relations/embedded/in.rb
310
+ - lib/mongoid/relations/embedded/many.rb
311
+ - lib/mongoid/relations/embedded/one.rb
312
+ - lib/mongoid/relations/macros.rb
313
+ - lib/mongoid/relations/many.rb
314
+ - lib/mongoid/relations/metadata.rb
315
+ - lib/mongoid/relations/nested_builder.rb
316
+ - lib/mongoid/relations/one.rb
317
+ - lib/mongoid/relations/polymorphic.rb
318
+ - lib/mongoid/relations/proxy.rb
319
+ - lib/mongoid/relations/referenced/in.rb
320
+ - lib/mongoid/relations/referenced/many.rb
321
+ - lib/mongoid/relations/referenced/many_to_many.rb
322
+ - lib/mongoid/relations/referenced/one.rb
323
+ - lib/mongoid/relations/reflections.rb
324
+ - lib/mongoid/relations.rb
310
325
  - lib/mongoid/safe.rb
311
326
  - lib/mongoid/safety.rb
312
327
  - lib/mongoid/scope.rb
@@ -326,6 +341,7 @@ files:
326
341
  - lib/rails/mongoid.rb
327
342
  - MIT_LICENSE
328
343
  - README.rdoc
344
+ - Rakefile
329
345
  has_rdoc: true
330
346
  homepage: http://mongoid.org
331
347
  licenses: []
@@ -340,7 +356,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
340
356
  requirements:
341
357
  - - ">="
342
358
  - !ruby/object:Gem::Version
343
- hash: 3
359
+ hash: 1989103359598370074
344
360
  segments:
345
361
  - 0
346
362
  version: "0"
@@ -349,7 +365,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
349
365
  requirements:
350
366
  - - ">="
351
367
  - !ruby/object:Gem::Version
352
- hash: 23
353
368
  segments:
354
369
  - 1
355
370
  - 3
@@ -361,6 +376,6 @@ rubyforge_project: mongoid
361
376
  rubygems_version: 1.3.7
362
377
  signing_key:
363
378
  specification_version: 3
364
- summary: Elegent Persistance in Ruby for MongoDB.
379
+ summary: Elegant Persistance in Ruby for MongoDB.
365
380
  test_files: []
366
381