mongoid 0.9.4 → 0.9.5
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/Rakefile +2 -4
- data/VERSION +1 -1
- data/lib/mongoid.rb +3 -2
- data/lib/mongoid/associations.rb +1 -0
- data/lib/mongoid/associations/accessor.rb +1 -0
- data/lib/mongoid/associations/belongs_to.rb +1 -0
- data/lib/mongoid/associations/decorator.rb +1 -0
- data/lib/mongoid/associations/has_many.rb +1 -0
- data/lib/mongoid/associations/has_one.rb +1 -0
- data/lib/mongoid/associations/options.rb +1 -0
- data/lib/mongoid/associations/relates_to_many.rb +1 -0
- data/lib/mongoid/associations/relates_to_one.rb +1 -0
- data/lib/mongoid/attributes.rb +1 -0
- data/lib/mongoid/commands.rb +1 -0
- data/lib/mongoid/commands/create.rb +1 -0
- data/lib/mongoid/commands/delete.rb +1 -0
- data/lib/mongoid/commands/delete_all.rb +1 -0
- data/lib/mongoid/commands/destroy.rb +1 -0
- data/lib/mongoid/commands/destroy_all.rb +1 -0
- data/lib/mongoid/commands/save.rb +1 -0
- data/lib/mongoid/commands/validate.rb +1 -0
- data/lib/mongoid/criteria.rb +28 -2
- data/lib/mongoid/document.rb +14 -7
- data/lib/mongoid/dynamic_finder.rb +1 -0
- data/lib/mongoid/extensions.rb +3 -0
- data/lib/mongoid/extensions/array/accessors.rb +15 -0
- data/lib/mongoid/extensions/array/assimilation.rb +1 -0
- data/lib/mongoid/extensions/array/conversions.rb +1 -0
- data/lib/mongoid/extensions/array/parentization.rb +1 -0
- data/lib/mongoid/extensions/boolean/conversions.rb +1 -0
- data/lib/mongoid/extensions/date/conversions.rb +1 -0
- data/lib/mongoid/extensions/datetime/conversions.rb +1 -0
- data/lib/mongoid/extensions/float/conversions.rb +1 -0
- data/lib/mongoid/extensions/hash/accessors.rb +2 -1
- data/lib/mongoid/extensions/hash/assimilation.rb +1 -0
- data/lib/mongoid/extensions/hash/conversions.rb +1 -0
- data/lib/mongoid/extensions/integer/conversions.rb +1 -0
- data/lib/mongoid/extensions/object/conversions.rb +1 -0
- data/lib/mongoid/extensions/string/conversions.rb +1 -0
- data/lib/mongoid/extensions/string/inflections.rb +1 -0
- data/lib/mongoid/extensions/symbol/inflections.rb +1 -0
- data/lib/mongoid/extensions/time/conversions.rb +1 -0
- data/lib/mongoid/field.rb +1 -0
- data/lib/mongoid/finders.rb +1 -0
- data/lib/mongoid/timestamps.rb +7 -6
- data/lib/mongoid/versioning.rb +1 -0
- data/mongoid.gemspec +11 -8
- data/spec/integration/mongoid/document_spec.rb +36 -1
- data/spec/spec.opts +2 -4
- data/spec/spec_helper.rb +6 -0
- data/spec/unit/mongoid/criteria_spec.rb +42 -3
- data/spec/unit/mongoid/document_spec.rb +17 -22
- data/spec/unit/mongoid/extensions/array/accessors_spec.rb +50 -0
- data/spec/unit/mongoid/timestamps_spec.rb +3 -3
- metadata +7 -4
    
        data/Rakefile
    CHANGED
    
    | @@ -2,7 +2,6 @@ require "rubygems" | |
| 2 2 | 
             
            require "rake"
         | 
| 3 3 | 
             
            require "rake/rdoctask"
         | 
| 4 4 | 
             
            require "spec/rake/spectask"
         | 
| 5 | 
            -
            require "metric_fu"
         | 
| 6 5 |  | 
| 7 6 | 
             
            begin
         | 
| 8 7 | 
             
              require "jeweler"
         | 
| @@ -16,8 +15,8 @@ begin | |
| 16 15 | 
             
                gem.add_dependency("durran-validatable", "1.8.3")
         | 
| 17 16 | 
             
                gem.add_dependency("leshill-will_paginate", "2.3.11")
         | 
| 18 17 | 
             
                gem.add_dependency("activesupport", "2.3.4")
         | 
| 19 | 
            -
                gem.add_dependency("mongo", "0. | 
| 20 | 
            -
                gem.add_dependency("mongo_ext", "0. | 
| 18 | 
            +
                gem.add_dependency("mongo", "0.18.1")
         | 
| 19 | 
            +
                gem.add_dependency("mongo_ext", "0.18.1")
         | 
| 21 20 |  | 
| 22 21 | 
             
                gem.add_development_dependency("rspec", "1.2.9")
         | 
| 23 22 | 
             
                gem.add_development_dependency("mocha", "0.9.8")
         | 
| @@ -53,4 +52,3 @@ Rake::RDocTask.new do |rdoc| | |
| 53 52 | 
             
            end
         | 
| 54 53 |  | 
| 55 54 | 
             
            task :default => ["spec"]
         | 
| 56 | 
            -
            task :metrics => ["rcov", "metrics:all"]
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.9. | 
| 1 | 
            +
            0.9.5
         | 
    
        data/lib/mongoid.rb
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 1 2 | 
             
            # Copyright (c) 2009 Durran Jordan
         | 
| 2 3 | 
             
            #
         | 
| 3 4 | 
             
            # Permission is hereby granted, free of charge, to any person obtaining
         | 
| @@ -21,8 +22,8 @@ | |
| 21 22 | 
             
            require "rubygems"
         | 
| 22 23 |  | 
| 23 24 | 
             
            gem "activesupport", "2.3.4"
         | 
| 24 | 
            -
            gem "mongo", "0. | 
| 25 | 
            -
            gem "mongo_ext", "0. | 
| 25 | 
            +
            gem "mongo", "0.18.1"
         | 
| 26 | 
            +
            gem "mongo_ext", "0.18.1"
         | 
| 26 27 | 
             
            gem "durran-validatable", "1.8.3"
         | 
| 27 28 | 
             
            gem "leshill-will_paginate", "2.3.11"
         | 
| 28 29 |  | 
    
        data/lib/mongoid/associations.rb
    CHANGED
    
    
    
        data/lib/mongoid/attributes.rb
    CHANGED
    
    
    
        data/lib/mongoid/commands.rb
    CHANGED
    
    
    
        data/lib/mongoid/criteria.rb
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 1 2 | 
             
            module Mongoid #:nodoc:
         | 
| 2 3 | 
             
              # The +Criteria+ class is the core object needed in Mongoid to retrieve
         | 
| 3 4 | 
             
              # objects from the database. It is a DSL that essentially sets up the
         | 
| @@ -73,6 +74,25 @@ module Mongoid #:nodoc: | |
| 73 74 | 
             
                  selections.each { |key, value| @selector[key] = { "$all" => value } }; self
         | 
| 74 75 | 
             
                end
         | 
| 75 76 |  | 
| 77 | 
            +
                # Adds a criterion to the +Criteria+ that specifies values that must
         | 
| 78 | 
            +
                # be matched in order to return results. This is similar to a SQL "WHERE"
         | 
| 79 | 
            +
                # clause. This is the actual selector that will be provided to MongoDB,
         | 
| 80 | 
            +
                # similar to the Javascript object that is used when performing a find()
         | 
| 81 | 
            +
                # in the MongoDB console.
         | 
| 82 | 
            +
                #
         | 
| 83 | 
            +
                # Options:
         | 
| 84 | 
            +
                #
         | 
| 85 | 
            +
                # selectior: A +Hash+ that must match the attributes of the +Document+.
         | 
| 86 | 
            +
                #
         | 
| 87 | 
            +
                # Example:
         | 
| 88 | 
            +
                #
         | 
| 89 | 
            +
                # <tt>criteria.and(:field1 => "value1", :field2 => 15)</tt>
         | 
| 90 | 
            +
                #
         | 
| 91 | 
            +
                # Returns: <tt>self</tt>
         | 
| 92 | 
            +
                def and(selector = nil)
         | 
| 93 | 
            +
                  where(selector)
         | 
| 94 | 
            +
                end
         | 
| 95 | 
            +
             | 
| 76 96 | 
             
                # Get the count of matching documents in the database for the +Criteria+.
         | 
| 77 97 | 
             
                #
         | 
| 78 98 | 
             
                # Example:
         | 
| @@ -447,8 +467,14 @@ module Mongoid #:nodoc: | |
| 447 467 | 
             
                # <tt>criteria.where(:field1 => "value1", :field2 => 15)</tt>
         | 
| 448 468 | 
             
                #
         | 
| 449 469 | 
             
                # Returns: <tt>self</tt>
         | 
| 450 | 
            -
                def where(selector =  | 
| 451 | 
            -
                   | 
| 470 | 
            +
                def where(selector = nil)
         | 
| 471 | 
            +
                  case selector
         | 
| 472 | 
            +
                  when String
         | 
| 473 | 
            +
                    @selector.update("$where" => selector)
         | 
| 474 | 
            +
                  else
         | 
| 475 | 
            +
                    @selector.update(selector || {})
         | 
| 476 | 
            +
                  end
         | 
| 477 | 
            +
                  self
         | 
| 452 478 | 
             
                end
         | 
| 453 479 |  | 
| 454 480 | 
             
                protected
         | 
    
        data/lib/mongoid/document.rb
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 1 2 | 
             
            module Mongoid #:nodoc:
         | 
| 2 3 | 
             
              class Document
         | 
| 3 4 | 
             
                include ActiveSupport::Callbacks
         | 
| @@ -57,10 +58,9 @@ module Mongoid #:nodoc: | |
| 57 58 | 
             
                  def field(name, options = {})
         | 
| 58 59 | 
             
                    @fields ||= {}.with_indifferent_access
         | 
| 59 60 | 
             
                    @defaults ||= {}.with_indifferent_access
         | 
| 60 | 
            -
                    @fields[name | 
| 61 | 
            -
                    @defaults[name | 
| 62 | 
            -
                     | 
| 63 | 
            -
                    define_method("#{name}=") { |value| write_attribute(name, value) }
         | 
| 61 | 
            +
                    @fields[name] = Field.new(name.to_s, options)
         | 
| 62 | 
            +
                    @defaults[name] = options[:default] if options[:default]
         | 
| 63 | 
            +
                    define_field_methods(name, options)
         | 
| 64 64 | 
             
                  end
         | 
| 65 65 |  | 
| 66 66 | 
             
                  # Returns all the fields for the Document as a +Hash+ with names as keys.
         | 
| @@ -80,9 +80,9 @@ module Mongoid #:nodoc: | |
| 80 80 | 
             
                  end
         | 
| 81 81 |  | 
| 82 82 | 
             
                  # Instantiate a new object, only when loaded from the database.
         | 
| 83 | 
            -
                  def instantiate(attrs = {})
         | 
| 83 | 
            +
                  def instantiate(attrs = {}, allocating = false)
         | 
| 84 84 | 
             
                    attributes = attrs.with_indifferent_access
         | 
| 85 | 
            -
                    if attributes[:_id]
         | 
| 85 | 
            +
                    if attributes[:_id] || allocating
         | 
| 86 86 | 
             
                      document = allocate
         | 
| 87 87 | 
             
                      document.instance_variable_set(:@attributes, attributes)
         | 
| 88 88 | 
             
                      return document
         | 
| @@ -106,6 +106,13 @@ module Mongoid #:nodoc: | |
| 106 106 | 
             
                    @primary_key
         | 
| 107 107 | 
             
                  end
         | 
| 108 108 |  | 
| 109 | 
            +
                  protected
         | 
| 110 | 
            +
                  def define_field_methods(name, options)
         | 
| 111 | 
            +
                    define_method(name) { read_attribute(name) }
         | 
| 112 | 
            +
                    define_method("#{name}=") { |value| write_attribute(name, value) }
         | 
| 113 | 
            +
                    define_method("#{name}?") { read_attribute(name) == true } if options[:type] == Boolean
         | 
| 114 | 
            +
                  end
         | 
| 115 | 
            +
             | 
| 109 116 | 
             
                end
         | 
| 110 117 |  | 
| 111 118 | 
             
                # Performs equality checking on the attributes. For now we chack against
         | 
| @@ -139,7 +146,7 @@ module Mongoid #:nodoc: | |
| 139 146 | 
             
                # Clone the current +Document+. This will return all attributes with the
         | 
| 140 147 | 
             
                # exception of the document's id and versions.
         | 
| 141 148 | 
             
                def clone
         | 
| 142 | 
            -
                  self.class. | 
| 149 | 
            +
                  self.class.instantiate(@attributes.except(:_id).except(:versions).dup, true)
         | 
| 143 150 | 
             
                end
         | 
| 144 151 |  | 
| 145 152 | 
             
                # Get the Mongo::Collection associated with this Document.
         | 
    
        data/lib/mongoid/extensions.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            require "mongoid/extensions/array/accessors"
         | 
| 1 3 | 
             
            require "mongoid/extensions/array/assimilation"
         | 
| 2 4 | 
             
            require "mongoid/extensions/array/conversions"
         | 
| 3 5 | 
             
            require "mongoid/extensions/array/parentization"
         | 
| @@ -16,6 +18,7 @@ require "mongoid/extensions/symbol/inflections" | |
| 16 18 | 
             
            require "mongoid/extensions/time/conversions"
         | 
| 17 19 |  | 
| 18 20 | 
             
            class Array #:nodoc:
         | 
| 21 | 
            +
              include Mongoid::Extensions::Array::Accessors
         | 
| 19 22 | 
             
              include Mongoid::Extensions::Array::Assimilation
         | 
| 20 23 | 
             
              include Mongoid::Extensions::Array::Conversions
         | 
| 21 24 | 
             
              include Mongoid::Extensions::Array::Parentization
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            module Mongoid #:nodoc:
         | 
| 3 | 
            +
              module Extensions #:nodoc:
         | 
| 4 | 
            +
                module Array #:nodoc:
         | 
| 5 | 
            +
                  module Accessors #:nodoc:
         | 
| 6 | 
            +
                    # If the attributes already exists in the array then they will be
         | 
| 7 | 
            +
                    # updated, otherwise they will be appended.
         | 
| 8 | 
            +
                    def update(attributes)
         | 
| 9 | 
            +
                      delete_if { |e| attributes[:_id] && (e[:_id] == attributes[:_id]) }
         | 
| 10 | 
            +
                      self.<< attributes
         | 
| 11 | 
            +
                    end
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 1 2 | 
             
            module Mongoid #:nodoc:
         | 
| 2 3 | 
             
              module Extensions #:nodoc:
         | 
| 3 4 | 
             
                module Hash #:nodoc:
         | 
| @@ -8,7 +9,7 @@ module Mongoid #:nodoc: | |
| 8 9 | 
             
                        self[key] = self[key].merge(attrs) if self[key]
         | 
| 9 10 | 
             
                      else
         | 
| 10 11 | 
             
                        if elements = self[key]
         | 
| 11 | 
            -
                          elements. | 
| 12 | 
            +
                          elements.update(attrs)
         | 
| 12 13 | 
             
                        else
         | 
| 13 14 | 
             
                          self[key] = [attrs]
         | 
| 14 15 | 
             
                        end
         | 
    
        data/lib/mongoid/field.rb
    CHANGED
    
    
    
        data/lib/mongoid/finders.rb
    CHANGED
    
    
    
        data/lib/mongoid/timestamps.rb
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 1 2 | 
             
            module Mongoid
         | 
| 2 3 | 
             
              module Timestamps
         | 
| 3 4 |  | 
| @@ -5,8 +6,8 @@ module Mongoid | |
| 5 6 | 
             
                  base.class_eval do
         | 
| 6 7 | 
             
                    include InstanceMethods
         | 
| 7 8 | 
             
                    field :created_at, :type => Time
         | 
| 8 | 
            -
                    field : | 
| 9 | 
            -
                    before_save : | 
| 9 | 
            +
                    field :updated_at, :type => Time
         | 
| 10 | 
            +
                    before_save :set_created_at, :set_updated_at
         | 
| 10 11 | 
             
                  end
         | 
| 11 12 | 
             
                end
         | 
| 12 13 |  | 
| @@ -14,14 +15,14 @@ module Mongoid | |
| 14 15 |  | 
| 15 16 | 
             
                  # Update the created_at field on the Document to the current time. This is
         | 
| 16 17 | 
             
                  # only called on create.
         | 
| 17 | 
            -
                  def  | 
| 18 | 
            +
                  def set_created_at
         | 
| 18 19 | 
             
                    self.created_at = Time.now.utc if !created_at
         | 
| 19 20 | 
             
                  end
         | 
| 20 21 |  | 
| 21 | 
            -
                  # Update the  | 
| 22 | 
            +
                  # Update the updated_at field on the Document to the current time.
         | 
| 22 23 | 
             
                  # This is only called on create and on save.
         | 
| 23 | 
            -
                  def  | 
| 24 | 
            -
                    self. | 
| 24 | 
            +
                  def set_updated_at
         | 
| 25 | 
            +
                    self.updated_at = Time.now.utc
         | 
| 25 26 | 
             
                  end
         | 
| 26 27 | 
             
                end
         | 
| 27 28 |  | 
    
        data/lib/mongoid/versioning.rb
    CHANGED
    
    
    
        data/mongoid.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{mongoid}
         | 
| 8 | 
            -
              s.version = "0.9. | 
| 8 | 
            +
              s.version = "0.9.5"
         | 
| 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{2009-12- | 
| 12 | 
            +
              s.date = %q{2009-12-08}
         | 
| 13 13 | 
             
              s.email = %q{durran@gmail.com}
         | 
| 14 14 | 
             
              s.extra_rdoc_files = [
         | 
| 15 15 | 
             
                "README.textile"
         | 
| @@ -44,6 +44,7 @@ Gem::Specification.new do |s| | |
| 44 44 | 
             
                 "lib/mongoid/document.rb",
         | 
| 45 45 | 
             
                 "lib/mongoid/dynamic_finder.rb",
         | 
| 46 46 | 
             
                 "lib/mongoid/extensions.rb",
         | 
| 47 | 
            +
                 "lib/mongoid/extensions/array/accessors.rb",
         | 
| 47 48 | 
             
                 "lib/mongoid/extensions/array/assimilation.rb",
         | 
| 48 49 | 
             
                 "lib/mongoid/extensions/array/conversions.rb",
         | 
| 49 50 | 
             
                 "lib/mongoid/extensions/array/parentization.rb",
         | 
| @@ -91,6 +92,7 @@ Gem::Specification.new do |s| | |
| 91 92 | 
             
                 "spec/unit/mongoid/criteria_spec.rb",
         | 
| 92 93 | 
             
                 "spec/unit/mongoid/document_spec.rb",
         | 
| 93 94 | 
             
                 "spec/unit/mongoid/dynamic_finder_spec.rb",
         | 
| 95 | 
            +
                 "spec/unit/mongoid/extensions/array/accessors_spec.rb",
         | 
| 94 96 | 
             
                 "spec/unit/mongoid/extensions/array/assimilation_spec.rb",
         | 
| 95 97 | 
             
                 "spec/unit/mongoid/extensions/array/conversions_spec.rb",
         | 
| 96 98 | 
             
                 "spec/unit/mongoid/extensions/array/parentization_spec.rb",
         | 
| @@ -141,6 +143,7 @@ Gem::Specification.new do |s| | |
| 141 143 | 
             
                 "spec/unit/mongoid/criteria_spec.rb",
         | 
| 142 144 | 
             
                 "spec/unit/mongoid/document_spec.rb",
         | 
| 143 145 | 
             
                 "spec/unit/mongoid/dynamic_finder_spec.rb",
         | 
| 146 | 
            +
                 "spec/unit/mongoid/extensions/array/accessors_spec.rb",
         | 
| 144 147 | 
             
                 "spec/unit/mongoid/extensions/array/assimilation_spec.rb",
         | 
| 145 148 | 
             
                 "spec/unit/mongoid/extensions/array/conversions_spec.rb",
         | 
| 146 149 | 
             
                 "spec/unit/mongoid/extensions/array/parentization_spec.rb",
         | 
| @@ -171,16 +174,16 @@ Gem::Specification.new do |s| | |
| 171 174 | 
             
                  s.add_runtime_dependency(%q<durran-validatable>, ["= 1.8.3"])
         | 
| 172 175 | 
             
                  s.add_runtime_dependency(%q<leshill-will_paginate>, ["= 2.3.11"])
         | 
| 173 176 | 
             
                  s.add_runtime_dependency(%q<activesupport>, ["= 2.3.4"])
         | 
| 174 | 
            -
                  s.add_runtime_dependency(%q<mongo>, ["= 0. | 
| 175 | 
            -
                  s.add_runtime_dependency(%q<mongo_ext>, ["= 0. | 
| 177 | 
            +
                  s.add_runtime_dependency(%q<mongo>, ["= 0.18.1"])
         | 
| 178 | 
            +
                  s.add_runtime_dependency(%q<mongo_ext>, ["= 0.18.1"])
         | 
| 176 179 | 
             
                  s.add_development_dependency(%q<rspec>, ["= 1.2.9"])
         | 
| 177 180 | 
             
                  s.add_development_dependency(%q<mocha>, ["= 0.9.8"])
         | 
| 178 181 | 
             
                else
         | 
| 179 182 | 
             
                  s.add_dependency(%q<durran-validatable>, ["= 1.8.3"])
         | 
| 180 183 | 
             
                  s.add_dependency(%q<leshill-will_paginate>, ["= 2.3.11"])
         | 
| 181 184 | 
             
                  s.add_dependency(%q<activesupport>, ["= 2.3.4"])
         | 
| 182 | 
            -
                  s.add_dependency(%q<mongo>, ["= 0. | 
| 183 | 
            -
                  s.add_dependency(%q<mongo_ext>, ["= 0. | 
| 185 | 
            +
                  s.add_dependency(%q<mongo>, ["= 0.18.1"])
         | 
| 186 | 
            +
                  s.add_dependency(%q<mongo_ext>, ["= 0.18.1"])
         | 
| 184 187 | 
             
                  s.add_dependency(%q<rspec>, ["= 1.2.9"])
         | 
| 185 188 | 
             
                  s.add_dependency(%q<mocha>, ["= 0.9.8"])
         | 
| 186 189 | 
             
                end
         | 
| @@ -188,8 +191,8 @@ Gem::Specification.new do |s| | |
| 188 191 | 
             
                s.add_dependency(%q<durran-validatable>, ["= 1.8.3"])
         | 
| 189 192 | 
             
                s.add_dependency(%q<leshill-will_paginate>, ["= 2.3.11"])
         | 
| 190 193 | 
             
                s.add_dependency(%q<activesupport>, ["= 2.3.4"])
         | 
| 191 | 
            -
                s.add_dependency(%q<mongo>, ["= 0. | 
| 192 | 
            -
                s.add_dependency(%q<mongo_ext>, ["= 0. | 
| 194 | 
            +
                s.add_dependency(%q<mongo>, ["= 0.18.1"])
         | 
| 195 | 
            +
                s.add_dependency(%q<mongo_ext>, ["= 0.18.1"])
         | 
| 193 196 | 
             
                s.add_dependency(%q<rspec>, ["= 1.2.9"])
         | 
| 194 197 | 
             
                s.add_dependency(%q<mocha>, ["= 0.9.8"])
         | 
| 195 198 | 
             
              end
         | 
| @@ -376,6 +376,10 @@ describe Mongoid::Document do | |
| 376 376 | 
             
                  @comment.save
         | 
| 377 377 | 
             
                end
         | 
| 378 378 |  | 
| 379 | 
            +
                after do
         | 
| 380 | 
            +
                  Comment.collection.drop
         | 
| 381 | 
            +
                end
         | 
| 382 | 
            +
             | 
| 379 383 | 
             
                context "first save" do
         | 
| 380 384 |  | 
| 381 385 | 
             
                  it "creates a new version" do
         | 
| @@ -392,7 +396,6 @@ describe Mongoid::Document do | |
| 392 396 |  | 
| 393 397 | 
             
                  before do
         | 
| 394 398 | 
             
                    5.times do |n|
         | 
| 395 | 
            -
                      @comment.text = "#{n}"
         | 
| 396 399 | 
             
                      @comment.save
         | 
| 397 400 | 
             
                    end
         | 
| 398 401 | 
             
                  end
         | 
| @@ -407,4 +410,36 @@ describe Mongoid::Document do | |
| 407 410 |  | 
| 408 411 | 
             
              end
         | 
| 409 412 |  | 
| 413 | 
            +
              context "executing criteria with date comparisons" do
         | 
| 414 | 
            +
             | 
| 415 | 
            +
                context "handling specific dates" do
         | 
| 416 | 
            +
             | 
| 417 | 
            +
                  before do
         | 
| 418 | 
            +
                    @person = Person.create(:dob => Date.new(2000, 10, 31))
         | 
| 419 | 
            +
                  end
         | 
| 420 | 
            +
             | 
| 421 | 
            +
                  it "handles comparisons with todays date"do
         | 
| 422 | 
            +
                    people = Person.select.where("this.dob < new Date()")
         | 
| 423 | 
            +
                    people.first.should == @person
         | 
| 424 | 
            +
                  end
         | 
| 425 | 
            +
             | 
| 426 | 
            +
                  it "handles conparisons with a date range" do
         | 
| 427 | 
            +
                    people = Person.select.where("new Date(1976, 10, 31) < this.dob && this.dob < new Date()")
         | 
| 428 | 
            +
                    people.first.should == @person
         | 
| 429 | 
            +
                  end
         | 
| 430 | 
            +
             | 
| 431 | 
            +
                  it "handles false comparisons in a date range" do
         | 
| 432 | 
            +
                    people = Person.select.where("new Date(2005, 10, 31) < this.dob && this.dob < new Date()")
         | 
| 433 | 
            +
                    people.should be_empty
         | 
| 434 | 
            +
                  end
         | 
| 435 | 
            +
             | 
| 436 | 
            +
                  it "handles comparisons with date objects"do
         | 
| 437 | 
            +
                    people = Person.select.where(:dob => { "$lt" => Date.today.midnight })
         | 
| 438 | 
            +
                    people.first.should == @person
         | 
| 439 | 
            +
                  end
         | 
| 440 | 
            +
             | 
| 441 | 
            +
                end
         | 
| 442 | 
            +
             | 
| 443 | 
            +
              end
         | 
| 444 | 
            +
             | 
| 410 445 | 
             
            end
         | 
    
        data/spec/spec.opts
    CHANGED
    
    
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -36,6 +36,11 @@ class Person < Mongoid::Document | |
| 36 36 | 
             
              has_one :name
         | 
| 37 37 | 
             
              has_one :pet, :class_name => "Animal"
         | 
| 38 38 |  | 
| 39 | 
            +
              index :title
         | 
| 40 | 
            +
              index :dob
         | 
| 41 | 
            +
              index :addresses
         | 
| 42 | 
            +
              index :name
         | 
| 43 | 
            +
             | 
| 39 44 | 
             
              relates_to_one :game
         | 
| 40 45 | 
             
              relates_to_many :posts
         | 
| 41 46 |  | 
| @@ -124,6 +129,7 @@ end | |
| 124 129 | 
             
            class Comment < Mongoid::Document
         | 
| 125 130 | 
             
              include Mongoid::Versioning
         | 
| 126 131 | 
             
              field :text
         | 
| 132 | 
            +
              key :text
         | 
| 127 133 | 
             
            end
         | 
| 128 134 |  | 
| 129 135 | 
             
            class Decorated
         | 
| @@ -54,6 +54,32 @@ describe Mongoid::Criteria do | |
| 54 54 |  | 
| 55 55 | 
             
              end
         | 
| 56 56 |  | 
| 57 | 
            +
              describe "#and" do
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                context "when provided a hash" do
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                  it "adds the clause to the selector" do
         | 
| 62 | 
            +
                    @criteria.and(:title => "Title", :text => "Text")
         | 
| 63 | 
            +
                    @criteria.selector.should == { :title => "Title", :text => "Text" }
         | 
| 64 | 
            +
                  end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                context "when provided a string" do
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                  it "adds the $where clause to the selector" do
         | 
| 71 | 
            +
                    @criteria.and("this.date < new Date()")
         | 
| 72 | 
            +
                    @criteria.selector.should == { "$where" => "this.date < new Date()" }
         | 
| 73 | 
            +
                  end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                it "returns self" do
         | 
| 78 | 
            +
                  @criteria.and.should == @criteria
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
              end
         | 
| 82 | 
            +
             | 
| 57 83 | 
             
              describe "#collect" do
         | 
| 58 84 |  | 
| 59 85 | 
             
                context "filtering" do
         | 
| @@ -821,9 +847,22 @@ describe Mongoid::Criteria do | |
| 821 847 |  | 
| 822 848 | 
             
              describe "#where" do
         | 
| 823 849 |  | 
| 824 | 
            -
                 | 
| 825 | 
            -
             | 
| 826 | 
            -
                   | 
| 850 | 
            +
                context "when provided a hash" do
         | 
| 851 | 
            +
             | 
| 852 | 
            +
                  it "adds the clause to the selector" do
         | 
| 853 | 
            +
                    @criteria.where(:title => "Title", :text => "Text")
         | 
| 854 | 
            +
                    @criteria.selector.should == { :title => "Title", :text => "Text" }
         | 
| 855 | 
            +
                  end
         | 
| 856 | 
            +
             | 
| 857 | 
            +
                end
         | 
| 858 | 
            +
             | 
| 859 | 
            +
                context "when provided a string" do
         | 
| 860 | 
            +
             | 
| 861 | 
            +
                  it "adds the $where clause to the selector" do
         | 
| 862 | 
            +
                    @criteria.where("this.date < new Date()")
         | 
| 863 | 
            +
                    @criteria.selector.should == { "$where" => "this.date < new Date()" }
         | 
| 864 | 
            +
                  end
         | 
| 865 | 
            +
             | 
| 827 866 | 
             
                end
         | 
| 828 867 |  | 
| 829 868 | 
             
                it "returns self" do
         | 
| @@ -207,6 +207,18 @@ describe Mongoid::Document do | |
| 207 207 |  | 
| 208 208 | 
             
                end
         | 
| 209 209 |  | 
| 210 | 
            +
                context "when type is a boolean" do
         | 
| 211 | 
            +
             | 
| 212 | 
            +
                  before do
         | 
| 213 | 
            +
                    @person = Person.new(:terms => true)
         | 
| 214 | 
            +
                  end
         | 
| 215 | 
            +
             | 
| 216 | 
            +
                  it "adds an accessor method with a question mark" do
         | 
| 217 | 
            +
                    @person.terms?.should be_true
         | 
| 218 | 
            +
                  end
         | 
| 219 | 
            +
             | 
| 220 | 
            +
                end
         | 
| 221 | 
            +
             | 
| 210 222 | 
             
              end
         | 
| 211 223 |  | 
| 212 224 | 
             
              describe ".human_name" do
         | 
| @@ -253,30 +265,13 @@ describe Mongoid::Document do | |
| 253 265 |  | 
| 254 266 | 
             
              describe ".instantiate" do
         | 
| 255 267 |  | 
| 256 | 
            -
                 | 
| 257 | 
            -
             | 
| 258 | 
            -
                   | 
| 259 | 
            -
                    @attributes = { :_id => "1", :title => "Sir", :age => 30 }
         | 
| 260 | 
            -
                    @person = Person.new(@attributes)
         | 
| 261 | 
            -
                  end
         | 
| 262 | 
            -
             | 
| 263 | 
            -
                  it "sets the attributes directly" do
         | 
| 264 | 
            -
                    Person.instantiate(@attributes).should == @person
         | 
| 265 | 
            -
                  end
         | 
| 266 | 
            -
             | 
| 268 | 
            +
                before do
         | 
| 269 | 
            +
                  @attributes = { :_id => "1", :title => "Sir", :age => 30 }
         | 
| 270 | 
            +
                  @person = Person.new(@attributes)
         | 
| 267 271 | 
             
                end
         | 
| 268 272 |  | 
| 269 | 
            -
                 | 
| 270 | 
            -
             | 
| 271 | 
            -
                  before do
         | 
| 272 | 
            -
                    @attributes = { :title => "Sir", :age => 30 }
         | 
| 273 | 
            -
                    @person = Person.new(@attributes)
         | 
| 274 | 
            -
                  end
         | 
| 275 | 
            -
             | 
| 276 | 
            -
                  it "instantiates normally" do
         | 
| 277 | 
            -
                    Person.instantiate(@attributes).id.should_not be_nil
         | 
| 278 | 
            -
                  end
         | 
| 279 | 
            -
             | 
| 273 | 
            +
                it "sets the attributes directly" do
         | 
| 274 | 
            +
                  Person.instantiate(@attributes).should == @person
         | 
| 280 275 | 
             
                end
         | 
| 281 276 |  | 
| 282 277 | 
             
              end
         | 
| @@ -0,0 +1,50 @@ | |
| 1 | 
            +
            require "spec_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Mongoid::Extensions::Array::Accessors do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              describe "#update" do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                context "when the attributes exist" do
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  before do
         | 
| 10 | 
            +
                    @array = [{ :_id => 1, :name => "James T. Kirk" }]
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  it "overwrites with the new attributes" do
         | 
| 14 | 
            +
                    @array.update({ :_id => 1, :name => "Spock" })
         | 
| 15 | 
            +
                    @array.first[:name].should == "Spock"
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                context "when the attributes do not exist" do
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  before do
         | 
| 23 | 
            +
                    @array = [{ :_id => 1, :name => "James T. Kirk" }]
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  it "appends the new attributes" do
         | 
| 27 | 
            +
                    @array.update({ :_id => 2, :name => "Scotty" })
         | 
| 28 | 
            +
                    @array.size.should == 2
         | 
| 29 | 
            +
                    @array.last[:name].should == "Scotty"
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                context "when the new attribtues have no id" do
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  before do
         | 
| 37 | 
            +
                    @array = [{ :_id => 1, :name => "James T. Kirk" }]
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  it "appends the new attributes" do
         | 
| 41 | 
            +
                    @array.update({:name => "Scotty" })
         | 
| 42 | 
            +
                    @array.size.should == 2
         | 
| 43 | 
            +
                    @array.last[:name].should == "Scotty"
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            end
         | 
| @@ -8,16 +8,16 @@ describe Mongoid::Timestamps do | |
| 8 8 | 
             
                  @person = Person.new
         | 
| 9 9 | 
             
                end
         | 
| 10 10 |  | 
| 11 | 
            -
                it "adds created_at and  | 
| 11 | 
            +
                it "adds created_at and updated_at to the document" do
         | 
| 12 12 | 
             
                  fields = Person.instance_variable_get(:@fields)
         | 
| 13 13 | 
             
                  fields[:created_at].should_not be_nil
         | 
| 14 | 
            -
                  fields[: | 
| 14 | 
            +
                  fields[:updated_at].should_not be_nil
         | 
| 15 15 | 
             
                end
         | 
| 16 16 |  | 
| 17 17 | 
             
                it "forces the timestamps to UTC" do
         | 
| 18 18 | 
             
                  @person.run_callbacks(:before_save)
         | 
| 19 19 | 
             
                  @person.created_at.should be_close(Time.now.utc, 10.seconds)
         | 
| 20 | 
            -
                  @person. | 
| 20 | 
            +
                  @person.updated_at.should be_close(Time.now.utc, 10.seconds)
         | 
| 21 21 | 
             
                end
         | 
| 22 22 |  | 
| 23 23 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: mongoid
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 0.9. | 
| 4 | 
            +
              version: 0.9.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - Durran Jordan
         | 
| @@ -9,7 +9,7 @@ autorequire: | |
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 |  | 
| 12 | 
            -
            date: 2009-12- | 
| 12 | 
            +
            date: 2009-12-08 00:00:00 -05:00
         | 
| 13 13 | 
             
            default_executable: 
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -50,7 +50,7 @@ dependencies: | |
| 50 50 | 
             
                requirements: 
         | 
| 51 51 | 
             
                - - "="
         | 
| 52 52 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 53 | 
            -
                    version: 0. | 
| 53 | 
            +
                    version: 0.18.1
         | 
| 54 54 | 
             
                version: 
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 56 56 | 
             
              name: mongo_ext
         | 
| @@ -60,7 +60,7 @@ dependencies: | |
| 60 60 | 
             
                requirements: 
         | 
| 61 61 | 
             
                - - "="
         | 
| 62 62 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 63 | 
            -
                    version: 0. | 
| 63 | 
            +
                    version: 0.18.1
         | 
| 64 64 | 
             
                version: 
         | 
| 65 65 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 66 66 | 
             
              name: rspec
         | 
| @@ -120,6 +120,7 @@ files: | |
| 120 120 | 
             
            - lib/mongoid/document.rb
         | 
| 121 121 | 
             
            - lib/mongoid/dynamic_finder.rb
         | 
| 122 122 | 
             
            - lib/mongoid/extensions.rb
         | 
| 123 | 
            +
            - lib/mongoid/extensions/array/accessors.rb
         | 
| 123 124 | 
             
            - lib/mongoid/extensions/array/assimilation.rb
         | 
| 124 125 | 
             
            - lib/mongoid/extensions/array/conversions.rb
         | 
| 125 126 | 
             
            - lib/mongoid/extensions/array/parentization.rb
         | 
| @@ -167,6 +168,7 @@ files: | |
| 167 168 | 
             
            - spec/unit/mongoid/criteria_spec.rb
         | 
| 168 169 | 
             
            - spec/unit/mongoid/document_spec.rb
         | 
| 169 170 | 
             
            - spec/unit/mongoid/dynamic_finder_spec.rb
         | 
| 171 | 
            +
            - spec/unit/mongoid/extensions/array/accessors_spec.rb
         | 
| 170 172 | 
             
            - spec/unit/mongoid/extensions/array/assimilation_spec.rb
         | 
| 171 173 | 
             
            - spec/unit/mongoid/extensions/array/conversions_spec.rb
         | 
| 172 174 | 
             
            - spec/unit/mongoid/extensions/array/parentization_spec.rb
         | 
| @@ -239,6 +241,7 @@ test_files: | |
| 239 241 | 
             
            - spec/unit/mongoid/criteria_spec.rb
         | 
| 240 242 | 
             
            - spec/unit/mongoid/document_spec.rb
         | 
| 241 243 | 
             
            - spec/unit/mongoid/dynamic_finder_spec.rb
         | 
| 244 | 
            +
            - spec/unit/mongoid/extensions/array/accessors_spec.rb
         | 
| 242 245 | 
             
            - spec/unit/mongoid/extensions/array/assimilation_spec.rb
         | 
| 243 246 | 
             
            - spec/unit/mongoid/extensions/array/conversions_spec.rb
         | 
| 244 247 | 
             
            - spec/unit/mongoid/extensions/array/parentization_spec.rb
         |