mongoid 2.0.0.beta.9 → 2.0.0.beta.10
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +2 -4
- data/lib/mongoid.rb +2 -1
- data/lib/mongoid/associations.rb +2 -3
- data/lib/mongoid/associations/embeds_many.rb +6 -2
- data/lib/mongoid/associations/embeds_one.rb +1 -3
- data/lib/mongoid/associations/options.rb +11 -10
- data/lib/mongoid/associations/references_many.rb +27 -4
- data/lib/mongoid/associations/references_many_as_array.rb +24 -4
- data/lib/mongoid/associations/references_one.rb +1 -2
- data/lib/mongoid/atomicity.rb +17 -4
- data/lib/mongoid/config.rb +97 -20
- data/lib/mongoid/contexts/enumerable.rb +9 -4
- data/lib/mongoid/contexts/mongo.rb +1 -1
- data/lib/mongoid/criteria.rb +7 -1
- data/lib/mongoid/criterion/inclusion.rb +12 -5
- data/lib/mongoid/criterion/optional.rb +26 -3
- data/lib/mongoid/cursor.rb +0 -1
- data/lib/mongoid/deprecation.rb +1 -2
- data/lib/mongoid/document.rb +25 -3
- data/lib/mongoid/extensions.rb +2 -1
- data/lib/mongoid/extensions/float/conversions.rb +1 -1
- data/lib/mongoid/extensions/integer/conversions.rb +1 -1
- data/lib/mongoid/extensions/symbol/conversions.rb +21 -0
- data/lib/mongoid/finders.rb +3 -2
- data/lib/mongoid/indexes.rb +17 -6
- data/lib/mongoid/logger.rb +19 -0
- data/lib/mongoid/paranoia.rb +12 -14
- data/lib/mongoid/persistence/remove_embedded.rb +0 -4
- data/lib/mongoid/persistence/update.rb +3 -0
- data/lib/mongoid/railtie.rb +37 -4
- data/lib/mongoid/railties/database.rake +19 -1
- data/lib/mongoid/validations/associated.rb +1 -1
- data/lib/mongoid/validations/locale/en.yml +4 -3
- data/lib/mongoid/validations/uniqueness.rb +19 -8
- data/lib/mongoid/version.rb +1 -1
- metadata +50 -18
- data/lib/mongoid/extensions/array/aliasing.rb +0 -4
data/README.rdoc
CHANGED
@@ -6,14 +6,12 @@ Mongoid is an ODM (Object-Document-Mapper) framework for MongoDB in Ruby.
|
|
6
6
|
|
7
7
|
== Project Tracking
|
8
8
|
|
9
|
-
* {Mongoid on Pivotal Tracker}[http://www.pivotaltracker.com/projects/27482]
|
10
9
|
* {Mongoid Google Group}[http://groups.google.com/group/mongoid]
|
11
|
-
* {Mongoid on CI Joe}[http://ci.mongoid.org/]
|
12
10
|
* {Mongoid Website and Documentation}[http://mongoid.org]
|
13
11
|
|
14
12
|
== Compatibility
|
15
13
|
|
16
|
-
Mongoid is developed against Ruby 1.8.
|
14
|
+
Mongoid is developed against Ruby 1.8.7, 1.9.1, 1.9.2
|
17
15
|
|
18
16
|
= Documentation
|
19
17
|
|
@@ -22,7 +20,7 @@ Please see the new Mongoid website for up-to-date documentation:
|
|
22
20
|
|
23
21
|
= License
|
24
22
|
|
25
|
-
Copyright (c) 2009 Durran Jordan
|
23
|
+
Copyright (c) 2009, 2010 Durran Jordan
|
26
24
|
|
27
25
|
Permission is hereby granted, free of charge, to any person obtaining
|
28
26
|
a copy of this software and associated documentation files (the
|
data/lib/mongoid.rb
CHANGED
@@ -63,6 +63,7 @@ require "mongoid/hierarchy"
|
|
63
63
|
require "mongoid/identity"
|
64
64
|
require "mongoid/indexes"
|
65
65
|
require "mongoid/javascript"
|
66
|
+
require "mongoid/logger"
|
66
67
|
require "mongoid/matchers"
|
67
68
|
require "mongoid/memoization"
|
68
69
|
require "mongoid/named_scope"
|
@@ -111,7 +112,7 @@ module Mongoid #:nodoc
|
|
111
112
|
block_given? ? yield(config) : config
|
112
113
|
end
|
113
114
|
|
114
|
-
# Easy convenience method for
|
115
|
+
# Easy convenience method for generating an alert from the
|
115
116
|
# deprecation module.
|
116
117
|
#
|
117
118
|
# Example:
|
data/lib/mongoid/associations.rb
CHANGED
@@ -229,8 +229,8 @@ module Mongoid # :nodoc:
|
|
229
229
|
|
230
230
|
alias :has_one_related :references_one
|
231
231
|
|
232
|
-
# Returns the
|
233
|
-
#
|
232
|
+
# Returns the association reflection object with the supplied association
|
233
|
+
# name.
|
234
234
|
#
|
235
235
|
# Options:
|
236
236
|
#
|
@@ -241,7 +241,6 @@ module Mongoid # :nodoc:
|
|
241
241
|
# <tt>Person.reflect_on_association(:addresses)</tt>
|
242
242
|
def reflect_on_association(name)
|
243
243
|
association = associations[name.to_s]
|
244
|
-
association ? association.macro : nil
|
245
244
|
end
|
246
245
|
|
247
246
|
protected
|
@@ -175,9 +175,10 @@ module Mongoid #:nodoc:
|
|
175
175
|
#
|
176
176
|
# The newly build target Document.
|
177
177
|
def nested_build(attributes, options = {})
|
178
|
+
@parent.instance_variable_set(:@building_nested, true)
|
178
179
|
attributes.each do |index, attrs|
|
179
180
|
if document = detect { |document| document._index == index.to_i }
|
180
|
-
if options && options[:allow_destroy] && attrs['_destroy']
|
181
|
+
if options && options[:allow_destroy] && Boolean.set(attrs['_destroy'])
|
181
182
|
@target.delete(document)
|
182
183
|
document.destroy
|
183
184
|
else
|
@@ -186,7 +187,10 @@ module Mongoid #:nodoc:
|
|
186
187
|
else
|
187
188
|
build(attrs)
|
188
189
|
end
|
189
|
-
end
|
190
|
+
end
|
191
|
+
@target.each_with_index { |document, index| document._index = index }
|
192
|
+
@parent.instance_variable_set(:@building_nested, false)
|
193
|
+
self
|
190
194
|
end
|
191
195
|
|
192
196
|
# Paginate the association. Will create a new criteria, set the documents
|
@@ -44,9 +44,7 @@ module Mongoid #:nodoc:
|
|
44
44
|
# A new target document.
|
45
45
|
def nested_build(attributes, options = nil)
|
46
46
|
unless @target.blank? && options[:update_only]
|
47
|
-
(attributes
|
48
|
-
@target.write_attribute(key, value)
|
49
|
-
end
|
47
|
+
@target.write_attributes(attributes)
|
50
48
|
end; @target
|
51
49
|
end
|
52
50
|
|
@@ -1,17 +1,17 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module Mongoid #:nodoc:
|
3
3
|
module Associations #:nodoc:
|
4
|
-
class Options #:nodoc:
|
4
|
+
class Options < Hash #:nodoc:
|
5
5
|
|
6
6
|
# Create the new +Options+ object, which provides convenience methods for
|
7
7
|
# accessing values out of an options +Hash+.
|
8
8
|
def initialize(attributes = {})
|
9
|
-
|
9
|
+
self.merge!(attributes)
|
10
10
|
end
|
11
11
|
|
12
12
|
# Returns the extension if it exists, nil if not.
|
13
13
|
def extension
|
14
|
-
|
14
|
+
self[:extend]
|
15
15
|
end
|
16
16
|
|
17
17
|
# Returns true is the options have extensions.
|
@@ -19,15 +19,16 @@ module Mongoid #:nodoc:
|
|
19
19
|
!extension.nil?
|
20
20
|
end
|
21
21
|
|
22
|
-
# Return the foreign key
|
22
|
+
# Return the foreign key if it exists, otherwise inflect it from the
|
23
|
+
# associated class name.
|
23
24
|
def foreign_key
|
24
|
-
key =
|
25
|
+
key = self[:foreign_key] || klass.name.to_s.foreign_key
|
25
26
|
key.to_s
|
26
27
|
end
|
27
28
|
|
28
29
|
# Returns the name of the inverse_of association
|
29
30
|
def inverse_of
|
30
|
-
|
31
|
+
self[:inverse_of]
|
31
32
|
end
|
32
33
|
|
33
34
|
# Return a +Class+ for the options. See #class_name
|
@@ -39,22 +40,22 @@ module Mongoid #:nodoc:
|
|
39
40
|
# was provided, then the constantized class_name will be returned. If not,
|
40
41
|
# a constant based on the association name will be returned.
|
41
42
|
def class_name
|
42
|
-
|
43
|
+
self[:class_name] || name.to_s.classify
|
43
44
|
end
|
44
45
|
|
45
46
|
# Returns the association name of the options.
|
46
47
|
def name
|
47
|
-
|
48
|
+
self[:name].to_s
|
48
49
|
end
|
49
50
|
|
50
51
|
# Returns whether or not this association is polymorphic.
|
51
52
|
def polymorphic
|
52
|
-
|
53
|
+
self[:polymorphic] == true
|
53
54
|
end
|
54
55
|
|
55
56
|
# Used with references_many to save as array of ids.
|
56
57
|
def stored_as
|
57
|
-
|
58
|
+
self[:stored_as]
|
58
59
|
end
|
59
60
|
end
|
60
61
|
end
|
@@ -26,7 +26,7 @@ module Mongoid #:nodoc:
|
|
26
26
|
# Returns the newly created object.
|
27
27
|
def build(attributes = nil)
|
28
28
|
load_target
|
29
|
-
name =
|
29
|
+
name = determine_name
|
30
30
|
object = @klass.instantiate((attributes || {}).merge(name => @parent))
|
31
31
|
@target << object
|
32
32
|
object
|
@@ -38,7 +38,7 @@ module Mongoid #:nodoc:
|
|
38
38
|
# the new object will then be saved.
|
39
39
|
#
|
40
40
|
# Returns the newly created object.
|
41
|
-
def create(attributes)
|
41
|
+
def create(attributes = nil)
|
42
42
|
build(attributes).tap(&:save)
|
43
43
|
end
|
44
44
|
|
@@ -46,7 +46,7 @@ module Mongoid #:nodoc:
|
|
46
46
|
# validation fails an error is raised.
|
47
47
|
#
|
48
48
|
# Returns the newly created object.
|
49
|
-
def create!(attributes)
|
49
|
+
def create!(attributes = nil)
|
50
50
|
build(attributes).tap(&:save!)
|
51
51
|
end
|
52
52
|
|
@@ -144,6 +144,11 @@ module Mongoid #:nodoc:
|
|
144
144
|
@target = @target.entries if @parent.new_record?
|
145
145
|
end
|
146
146
|
|
147
|
+
def determine_name
|
148
|
+
@proxy ||= class << self; self; end
|
149
|
+
@proxy.send(:determine_name, @parent, @options)
|
150
|
+
end
|
151
|
+
|
147
152
|
# The default query used for retrieving the documents from the database.
|
148
153
|
# In this case we use the common API between Mongoid, ActiveRecord, and
|
149
154
|
# DataMapper so we can do one-to-many relationships with data in other
|
@@ -212,10 +217,28 @@ module Mongoid #:nodoc:
|
|
212
217
|
#
|
213
218
|
# <tt>RelatesToOne.update(game, person, options)</tt>
|
214
219
|
def update(target, document, options)
|
215
|
-
name = document
|
220
|
+
name = determine_name(document, options)
|
216
221
|
target.each { |child| child.send("#{name}=", document) }
|
217
222
|
instantiate(document, options, target)
|
218
223
|
end
|
224
|
+
|
225
|
+
protected
|
226
|
+
def determine_name(document, options)
|
227
|
+
target = document.class
|
228
|
+
|
229
|
+
if (inverse = options.inverse_of) && inverse.is_a?(Array)
|
230
|
+
inverse = [*inverse].detect { |name| target.respond_to?(name) }
|
231
|
+
end
|
232
|
+
|
233
|
+
if !inverse
|
234
|
+
association = options.klass.associations.values.detect do |metadata|
|
235
|
+
metadata.options.klass == target
|
236
|
+
end
|
237
|
+
inverse = association.name if association
|
238
|
+
end
|
239
|
+
|
240
|
+
inverse || target.to_s.underscore
|
241
|
+
end
|
219
242
|
end
|
220
243
|
end
|
221
244
|
end
|
@@ -22,7 +22,15 @@ module Mongoid #:nodoc:
|
|
22
22
|
# clean way to handle this with new documents - we want to set the
|
23
23
|
# actual objects as well, but dont want to get in an infinite loop
|
24
24
|
# while doing so.
|
25
|
-
|
25
|
+
if inverse?
|
26
|
+
reverse_key = reverse_key(object)
|
27
|
+
case inverse_of(object).macro
|
28
|
+
when :references_many
|
29
|
+
object.send(reverse_key) << @parent.id
|
30
|
+
when :referenced_in
|
31
|
+
object.send("#{reverse_key}=", @parent.id)
|
32
|
+
end
|
33
|
+
end
|
26
34
|
@target << object
|
27
35
|
end
|
28
36
|
end
|
@@ -42,9 +50,22 @@ module Mongoid #:nodoc:
|
|
42
50
|
end
|
43
51
|
|
44
52
|
protected
|
53
|
+
|
45
54
|
# Find the inverse key for the supplied document.
|
46
55
|
def reverse_key(document)
|
47
|
-
document
|
56
|
+
inverse_of(document).options.foreign_key
|
57
|
+
end
|
58
|
+
|
59
|
+
# Returns +true+ if there is an inverse association on the referenced
|
60
|
+
# model.
|
61
|
+
def inverse?
|
62
|
+
!!@options.inverse_of
|
63
|
+
end
|
64
|
+
|
65
|
+
# Returns the association on +document+ which is the inverse of this
|
66
|
+
# association.
|
67
|
+
def inverse_of(document)
|
68
|
+
document.class.associations[@options.inverse_of.to_s]
|
48
69
|
end
|
49
70
|
|
50
71
|
# The default query used for retrieving the documents from the database.
|
@@ -67,8 +88,7 @@ module Mongoid #:nodoc:
|
|
67
88
|
# <tt>RelatesToManyAsArray.update(preferences, person, options)</tt>
|
68
89
|
def update(target, document, options)
|
69
90
|
target.each do |child|
|
70
|
-
name
|
71
|
-
child.send(name) << document
|
91
|
+
document.send(options.name) << child
|
72
92
|
end
|
73
93
|
instantiate(document, options, target)
|
74
94
|
end
|
@@ -24,7 +24,7 @@ module Mongoid #:nodoc:
|
|
24
24
|
# newly created document.
|
25
25
|
#
|
26
26
|
# Returns the newly created object.
|
27
|
-
def create(attributes)
|
27
|
+
def create(attributes = {})
|
28
28
|
build(attributes).tap(&:save)
|
29
29
|
end
|
30
30
|
|
@@ -93,7 +93,6 @@ module Mongoid #:nodoc:
|
|
93
93
|
target
|
94
94
|
end
|
95
95
|
end
|
96
|
-
|
97
96
|
end
|
98
97
|
end
|
99
98
|
end
|
data/lib/mongoid/atomicity.rb
CHANGED
@@ -4,7 +4,7 @@ module Mongoid #:nodoc:
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
# Get all the atomic updates that need to happen for the current
|
7
|
-
# +Document+. This
|
7
|
+
# +Document+. This includes all changes that need to happen in the
|
8
8
|
# entire hierarchy that exists below where the save call was made.
|
9
9
|
#
|
10
10
|
# Example:
|
@@ -15,9 +15,22 @@ module Mongoid #:nodoc:
|
|
15
15
|
#
|
16
16
|
# A +Hash+ of all atomic updates that need to occur.
|
17
17
|
def _updates
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
processed = {}
|
19
|
+
|
20
|
+
_children.inject({ "$set" => _sets, "$pushAll" => {}, :other => {} }) do |updates, child|
|
21
|
+
changes = child._sets
|
22
|
+
updates["$set"].update(changes)
|
23
|
+
processed[child.class] = true unless changes.empty?
|
24
|
+
|
25
|
+
target = processed.has_key?(child.class) ? :other : "$pushAll"
|
26
|
+
|
27
|
+
child._pushes.each do |attr, val|
|
28
|
+
if updates[target].has_key?(attr)
|
29
|
+
updates[target][attr] << val
|
30
|
+
else
|
31
|
+
updates[target].update({attr => [val]})
|
32
|
+
end
|
33
|
+
end
|
21
34
|
updates
|
22
35
|
end.delete_if do |key, value|
|
23
36
|
value.empty?
|
data/lib/mongoid/config.rb
CHANGED
@@ -11,10 +11,11 @@ module Mongoid #:nodoc
|
|
11
11
|
:parameterize_keys,
|
12
12
|
:persist_in_safe_mode,
|
13
13
|
:raise_not_found_error,
|
14
|
+
:autocreate_indexes,
|
14
15
|
:use_object_ids,
|
15
16
|
:skip_version_check
|
16
17
|
|
17
|
-
#
|
18
|
+
# Initializes the configuration with default settings.
|
18
19
|
def initialize
|
19
20
|
reset
|
20
21
|
end
|
@@ -56,7 +57,7 @@ module Mongoid #:nodoc
|
|
56
57
|
#
|
57
58
|
# Returns:
|
58
59
|
#
|
59
|
-
# The
|
60
|
+
# The master +Mongo::DB+ instance.
|
60
61
|
def master=(db)
|
61
62
|
check_database!(db)
|
62
63
|
@master = db
|
@@ -73,14 +74,21 @@ module Mongoid #:nodoc
|
|
73
74
|
#
|
74
75
|
# The master +Mongo::DB+
|
75
76
|
def master
|
76
|
-
|
77
|
+
raise Errors::InvalidDatabase.new(nil) unless @master
|
78
|
+
|
79
|
+
if @reconnect
|
80
|
+
@reconnect = false
|
81
|
+
reconnect!
|
82
|
+
end
|
83
|
+
|
84
|
+
@master
|
77
85
|
end
|
78
86
|
|
79
87
|
alias :database :master
|
80
88
|
alias :database= :master=
|
81
89
|
|
82
|
-
# Sets the Mongo::DB slave databases to be used. If the objects
|
83
|
-
#
|
90
|
+
# Sets the Mongo::DB slave databases to be used. If the objects provided
|
91
|
+
# are not valid +Mongo::DBs+ an error will be raised.
|
84
92
|
#
|
85
93
|
# Example:
|
86
94
|
#
|
@@ -88,7 +96,7 @@ module Mongoid #:nodoc
|
|
88
96
|
#
|
89
97
|
# Returns:
|
90
98
|
#
|
91
|
-
# The
|
99
|
+
# The slave DB instances.
|
92
100
|
def slaves=(dbs)
|
93
101
|
return unless dbs
|
94
102
|
dbs.each do |db|
|
@@ -97,7 +105,7 @@ module Mongoid #:nodoc
|
|
97
105
|
@slaves = dbs
|
98
106
|
end
|
99
107
|
|
100
|
-
# Returns the slave databases
|
108
|
+
# Returns the slave databases or nil if none have been set.
|
101
109
|
#
|
102
110
|
# Example:
|
103
111
|
#
|
@@ -110,6 +118,26 @@ module Mongoid #:nodoc
|
|
110
118
|
@slaves
|
111
119
|
end
|
112
120
|
|
121
|
+
# Returns the logger, or defaults to Rails logger or stdout logger.
|
122
|
+
#
|
123
|
+
# Example:
|
124
|
+
#
|
125
|
+
# <tt>Config.logger</tt>
|
126
|
+
def logger
|
127
|
+
return @logger if defined?(@logger)
|
128
|
+
|
129
|
+
@logger = defined?(Rails) ? Rails.logger : ::Logger.new($stdout)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Sets the logger for Mongoid to use.
|
133
|
+
#
|
134
|
+
# Example:
|
135
|
+
#
|
136
|
+
# <tt>Config.logger = Logger.new($stdout, :warn)</tt>
|
137
|
+
def logger=(logger)
|
138
|
+
@logger = logger
|
139
|
+
end
|
140
|
+
|
113
141
|
# Return field names that could cause destructive things to happen if
|
114
142
|
# defined in a Mongoid::Document
|
115
143
|
#
|
@@ -129,7 +157,8 @@ module Mongoid #:nodoc
|
|
129
157
|
}.call
|
130
158
|
end
|
131
159
|
|
132
|
-
# Configure mongoid from a hash
|
160
|
+
# Configure mongoid from a hash. This is usually called after parsing a
|
161
|
+
# yaml config file such as mongoid.yml.
|
133
162
|
#
|
134
163
|
# Example:
|
135
164
|
#
|
@@ -137,11 +166,27 @@ module Mongoid #:nodoc
|
|
137
166
|
def from_hash(settings)
|
138
167
|
_master(settings)
|
139
168
|
_slaves(settings)
|
140
|
-
settings.except("database").each_pair do |name, value|
|
169
|
+
settings.except("database", "slaves").each_pair do |name, value|
|
141
170
|
send("#{name}=", value) if respond_to?(name)
|
142
171
|
end
|
143
172
|
end
|
144
173
|
|
174
|
+
# Convenience method for connecting to the master database after forking a
|
175
|
+
# new process.
|
176
|
+
#
|
177
|
+
# Example:
|
178
|
+
#
|
179
|
+
# <tt>Mongoid.reconnect!</tt>
|
180
|
+
def reconnect!(now = true)
|
181
|
+
if now
|
182
|
+
master.connection.connect_to_master
|
183
|
+
else
|
184
|
+
# We set a @reconnect flag so that #master knows to reconnect the next
|
185
|
+
# time the connection is accessed.
|
186
|
+
@reconnect = true
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
145
190
|
# Reset the configuration options to the defaults.
|
146
191
|
#
|
147
192
|
# Example:
|
@@ -153,11 +198,48 @@ module Mongoid #:nodoc
|
|
153
198
|
@persist_in_safe_mode = true
|
154
199
|
@raise_not_found_error = true
|
155
200
|
@reconnect_time = 3
|
201
|
+
@autocreate_indexes = false
|
156
202
|
@use_object_ids = false
|
157
203
|
@skip_version_check = false
|
158
204
|
@time_zone = nil
|
159
205
|
end
|
160
206
|
|
207
|
+
##
|
208
|
+
# If Mongoid.use_object_ids = true
|
209
|
+
# Convert args to BSON::ObjectID
|
210
|
+
# If this args is an array, convert all args inside
|
211
|
+
# Else
|
212
|
+
# return args
|
213
|
+
#
|
214
|
+
# Options:
|
215
|
+
#
|
216
|
+
# args : A +String+ or an +Array+ convert to +BSON::ObjectID+
|
217
|
+
# cast : A +Boolean+ define if we can or not cast to BSON::ObjectID. If false, we use the default type of args
|
218
|
+
#
|
219
|
+
# Example:
|
220
|
+
#
|
221
|
+
# <tt>Mongoid.convert_to_object_id("4ab2bc4b8ad548971900005c", true)</tt>
|
222
|
+
# <tt>Mongoid.convert_to_object_id(["4ab2bc4b8ad548971900005c", "4ab2bc4b8ad548971900005d"])</tt>
|
223
|
+
#
|
224
|
+
# Returns:
|
225
|
+
#
|
226
|
+
# If Mongoid.use_object_ids = true
|
227
|
+
# An +Array+ of +BSON::ObjectID+ of each element if params is an +Array+
|
228
|
+
# A +BSON::ObjectID+ from params if params is +String+
|
229
|
+
# Else
|
230
|
+
# <tt>args</tt>
|
231
|
+
#
|
232
|
+
def convert_to_object_id(args, cast=true)
|
233
|
+
return args if !use_object_ids || args.is_a?(BSON::ObjectID) || !cast
|
234
|
+
if args.is_a?(String)
|
235
|
+
BSON::ObjectID(args)
|
236
|
+
else
|
237
|
+
args.map{ |a|
|
238
|
+
a.is_a?(BSON::ObjectID) ? a : BSON::ObjectID(a)
|
239
|
+
}
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
161
243
|
protected
|
162
244
|
|
163
245
|
# Check if the database is valid and the correct version.
|
@@ -173,17 +255,10 @@ module Mongoid #:nodoc
|
|
173
255
|
end
|
174
256
|
end
|
175
257
|
|
176
|
-
# Get a Rails logger or stdout logger.
|
177
|
-
#
|
178
|
-
# Example:
|
179
|
-
#
|
180
|
-
# <tt>config.logger</tt>
|
181
|
-
def logger
|
182
|
-
defined?(Rails) ? Rails.logger : Logger.new($stdout)
|
183
|
-
end
|
184
|
-
|
185
258
|
# Get a master database from settings.
|
186
259
|
#
|
260
|
+
# TODO: Durran: This code's a bit hairy, refactor.
|
261
|
+
#
|
187
262
|
# Example:
|
188
263
|
#
|
189
264
|
# <tt>config._master({}, "test")</tt>
|
@@ -193,11 +268,11 @@ module Mongoid #:nodoc
|
|
193
268
|
name = settings["database"] || mongo_uri.path.to_s.sub("/", "")
|
194
269
|
host = settings["host"] || mongo_uri.host || "localhost"
|
195
270
|
port = settings["port"] || mongo_uri.port || 27017
|
196
|
-
pool_size = settings["pool_size"] || 1
|
271
|
+
pool_size = settings["pool_size"] || 1
|
197
272
|
username = settings["username"] || mongo_uri.user
|
198
273
|
password = settings["password"] || mongo_uri.password
|
199
274
|
|
200
|
-
connection = Mongo::Connection.new(host, port, :logger =>
|
275
|
+
connection = Mongo::Connection.new(host, port, :logger => Mongoid::Logger.new, :pool_size => pool_size)
|
201
276
|
if username || password
|
202
277
|
connection.add_auth(name, username, password)
|
203
278
|
connection.apply_saved_authentication
|
@@ -207,6 +282,8 @@ module Mongoid #:nodoc
|
|
207
282
|
|
208
283
|
# Get a bunch-o-slaves from settings and names.
|
209
284
|
#
|
285
|
+
# TODO: Durran: This code's a bit hairy, refactor.
|
286
|
+
#
|
210
287
|
# Example:
|
211
288
|
#
|
212
289
|
# <tt>config._slaves({}, "test")</tt>
|