mongo_mapper 0.14.0 → 0.15.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/LICENSE +1 -1
- data/README.md +72 -0
- data/examples/keys.rb +1 -1
- data/examples/modifiers/set.rb +1 -1
- data/examples/querying.rb +1 -1
- data/examples/safe.rb +2 -2
- data/examples/scopes.rb +1 -1
- data/lib/mongo_mapper.rb +19 -17
- data/lib/mongo_mapper/connection.rb +16 -38
- data/lib/mongo_mapper/extensions/array.rb +1 -1
- data/lib/mongo_mapper/extensions/binary.rb +1 -1
- data/lib/mongo_mapper/extensions/date.rb +1 -1
- data/lib/mongo_mapper/extensions/float.rb +1 -1
- data/lib/mongo_mapper/extensions/hash.rb +1 -1
- data/lib/mongo_mapper/extensions/nil_class.rb +2 -2
- data/lib/mongo_mapper/extensions/object.rb +1 -1
- data/lib/mongo_mapper/extensions/object_id.rb +6 -2
- data/lib/mongo_mapper/extensions/set.rb +1 -1
- data/lib/mongo_mapper/extensions/string.rb +1 -1
- data/lib/mongo_mapper/plugins/accessible.rb +1 -1
- data/lib/mongo_mapper/plugins/associations/base.rb +10 -2
- data/lib/mongo_mapper/plugins/associations/belongs_to_association.rb +1 -1
- data/lib/mongo_mapper/plugins/associations/many_association.rb +6 -5
- data/lib/mongo_mapper/plugins/associations/{belongs_to_polymorphic_proxy.rb → proxy/belongs_to_polymorphic_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{belongs_to_proxy.rb → proxy/belongs_to_proxy.rb} +6 -0
- data/lib/mongo_mapper/plugins/associations/proxy/collection.rb +55 -0
- data/lib/mongo_mapper/plugins/associations/{embedded_collection.rb → proxy/embedded_collection.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{in_array_proxy.rb → proxy/in_array_proxy.rb} +36 -6
- data/lib/mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy.rb +136 -0
- data/lib/mongo_mapper/plugins/associations/{many_documents_as_proxy.rb → proxy/many_documents_as_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{many_documents_proxy.rb → proxy/many_documents_proxy.rb} +0 -4
- data/lib/mongo_mapper/plugins/associations/{many_embedded_polymorphic_proxy.rb → proxy/many_embedded_polymorphic_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{many_embedded_proxy.rb → proxy/many_embedded_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{many_polymorphic_proxy.rb → proxy/many_polymorphic_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{one_as_proxy.rb → proxy/one_as_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{one_embedded_polymorphic_proxy.rb → proxy/one_embedded_polymorphic_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/{one_embedded_proxy.rb → proxy/one_embedded_proxy.rb} +3 -1
- data/lib/mongo_mapper/plugins/associations/{one_proxy.rb → proxy/one_proxy.rb} +0 -0
- data/lib/mongo_mapper/plugins/associations/proxy/proxy.rb +164 -0
- data/lib/mongo_mapper/plugins/associations/single_association.rb +5 -13
- data/lib/mongo_mapper/plugins/dirty.rb +29 -37
- data/lib/mongo_mapper/plugins/document.rb +1 -1
- data/lib/mongo_mapper/plugins/dynamic_querying/dynamic_finder.rb +1 -1
- data/lib/mongo_mapper/plugins/embedded_callbacks.rb +1 -0
- data/lib/mongo_mapper/plugins/embedded_document.rb +2 -2
- data/lib/mongo_mapper/plugins/identity_map.rb +3 -1
- data/lib/mongo_mapper/plugins/indexes.rb +13 -6
- data/lib/mongo_mapper/plugins/keys.rb +12 -7
- data/lib/mongo_mapper/plugins/keys/key.rb +21 -13
- data/lib/mongo_mapper/plugins/modifiers.rb +39 -14
- data/lib/mongo_mapper/plugins/persistence.rb +6 -2
- data/lib/mongo_mapper/plugins/querying.rb +9 -3
- data/lib/mongo_mapper/plugins/querying/decorated_plucky_query.rb +6 -6
- data/lib/mongo_mapper/plugins/safe.rb +10 -4
- data/lib/mongo_mapper/plugins/scopes.rb +19 -3
- data/lib/mongo_mapper/plugins/stats.rb +1 -3
- data/lib/mongo_mapper/plugins/strong_parameters.rb +26 -0
- data/lib/mongo_mapper/plugins/validations.rb +1 -1
- data/lib/mongo_mapper/railtie.rb +1 -0
- data/lib/mongo_mapper/utils.rb +2 -2
- data/lib/mongo_mapper/version.rb +1 -1
- data/spec/examples.txt +1731 -0
- data/spec/functional/accessible_spec.rb +7 -1
- data/spec/functional/associations/belongs_to_polymorphic_proxy_spec.rb +2 -2
- data/spec/functional/associations/belongs_to_proxy_spec.rb +55 -5
- data/spec/functional/associations/in_array_proxy_spec.rb +149 -14
- data/spec/functional/associations/in_foreign_array_proxy_spec.rb +321 -0
- data/spec/functional/associations/many_documents_as_proxy_spec.rb +6 -6
- data/spec/functional/associations/many_documents_proxy_spec.rb +22 -22
- data/spec/functional/associations/many_embedded_polymorphic_proxy_spec.rb +2 -2
- data/spec/functional/associations/many_polymorphic_proxy_spec.rb +4 -4
- data/spec/functional/associations/one_as_proxy_spec.rb +8 -8
- data/spec/functional/associations/one_embedded_proxy_spec.rb +28 -0
- data/spec/functional/associations/one_proxy_spec.rb +19 -9
- data/spec/functional/associations_spec.rb +3 -3
- data/spec/functional/binary_spec.rb +2 -2
- data/spec/functional/caching_spec.rb +15 -22
- data/spec/functional/callbacks_spec.rb +2 -2
- data/spec/functional/counter_cache_spec.rb +10 -10
- data/spec/functional/dirty_spec.rb +48 -10
- data/spec/functional/dirty_with_callbacks_spec.rb +59 -0
- data/spec/functional/document_spec.rb +5 -8
- data/spec/functional/dumpable_spec.rb +1 -1
- data/spec/functional/embedded_document_spec.rb +5 -5
- data/spec/functional/identity_map_spec.rb +8 -8
- data/spec/functional/indexes_spec.rb +19 -18
- data/spec/functional/keys_spec.rb +64 -33
- data/spec/functional/logger_spec.rb +2 -2
- data/spec/functional/modifiers_spec.rb +81 -19
- data/spec/functional/partial_updates_spec.rb +8 -8
- data/spec/functional/protected_spec.rb +1 -1
- data/spec/functional/querying_spec.rb +70 -22
- data/spec/functional/safe_spec.rb +23 -27
- data/spec/functional/sci_spec.rb +7 -7
- data/spec/functional/scopes_spec.rb +89 -1
- data/spec/functional/static_keys_spec.rb +2 -2
- data/spec/functional/stats_spec.rb +28 -12
- data/spec/functional/strong_parameters_spec.rb +49 -0
- data/spec/functional/validations_spec.rb +8 -16
- data/spec/quality_spec.rb +1 -1
- data/spec/spec_helper.rb +39 -8
- data/spec/support/matchers.rb +1 -1
- data/spec/unit/associations/proxy_spec.rb +18 -10
- data/spec/unit/clone_spec.rb +1 -1
- data/spec/unit/document_spec.rb +3 -3
- data/spec/unit/embedded_document_spec.rb +4 -5
- data/spec/unit/extensions_spec.rb +12 -7
- data/spec/unit/identity_map_middleware_spec.rb +65 -96
- data/spec/unit/inspect_spec.rb +1 -1
- data/spec/unit/key_spec.rb +23 -18
- data/spec/unit/keys_spec.rb +17 -8
- data/spec/unit/mongo_mapper_spec.rb +41 -88
- data/spec/unit/rails_spec.rb +2 -2
- data/spec/unit/validations_spec.rb +18 -18
- metadata +70 -38
- data/README.rdoc +0 -56
- data/lib/mongo_mapper/extensions/ordered_hash.rb +0 -23
- data/lib/mongo_mapper/plugins/associations/collection.rb +0 -29
- data/lib/mongo_mapper/plugins/associations/proxy.rb +0 -141
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 290286ec91fda33bce766c8cacff110abd4027b200fa5279c2ca8afdf68d3ad3
|
4
|
+
data.tar.gz: b38548fb44300f730c70e0e43abe48a7a9785f884d8b28d3d7447afc78a77ec5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eef0f965e3d2b23cafcbfe6d3c39581ef4556e2b606a1668e3c26a2817bd4a75a94635c5102795171f4deeef6a0b52c74ff3bcac6f81c83a69e69d746f369a0b
|
7
|
+
data.tar.gz: '058f0007e68c8e8d3bbe5ea9236615ba252a44b12c5e91042390a8f920a4127cbe2950e8748f088daab02e8a7b8c6eb0a10b226c378cf4330951b1f8e94db898'
|
data/LICENSE
CHANGED
data/README.md
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# MongoMapper
|
2
|
+
|
3
|
+
A Ruby Object Mapper for Mongo.
|
4
|
+
|
5
|
+
[<img src="https://badge.fury.io/rb/mongo_mapper.svg" alt="RubyGems">](https://rubygems.org/gems/mongo_mapper)
|
6
|
+
|
7
|
+
[<img src="https://github.com/mongomapper/mongomapper/workflows/Ruby/badge.svg?branch=master" alt="Build Status" />](https://github.com/mongomapper/mongomapper/actions?query=workflow%3ARuby+branch%3Amaster)
|
8
|
+
|
9
|
+
<!-- [<img src="https://coveralls.io/repos/mongomapper/mongomapper/badge.svg" alt="Coverage Status" />](https://coveralls.io/r/mongomapper/mongomapper) -->
|
10
|
+
|
11
|
+
## Install
|
12
|
+
|
13
|
+
$ gem install mongo_mapper
|
14
|
+
|
15
|
+
## Documentation
|
16
|
+
|
17
|
+
http://mongomapper.com/documentation/
|
18
|
+
|
19
|
+
http://rdoc.info/github/mongomapper/mongomapper
|
20
|
+
|
21
|
+
## Open Commit Policy
|
22
|
+
|
23
|
+
Like Rubinius, we're trying out an "open commit policy".
|
24
|
+
|
25
|
+
If you've committed one (code) patch that has been accepted and would like to
|
26
|
+
work some more on the project, send an email to Scott Taylor
|
27
|
+
<scott@railsnewbie.com> along with your commit sha1.
|
28
|
+
|
29
|
+
## Compatibility
|
30
|
+
|
31
|
+
MongoMapper is tested against:
|
32
|
+
|
33
|
+
* MRI 2.4 - 3.0.1
|
34
|
+
* JRuby (Versions with 1.9 compatibility)
|
35
|
+
|
36
|
+
Additionally, MongoMapper is tested against:
|
37
|
+
|
38
|
+
* Rails 5.0 - 5.2
|
39
|
+
* Rails 6.0 - 6.1
|
40
|
+
|
41
|
+
Note, if you are using Ruby 3.0+, you'll need Rails 6.
|
42
|
+
|
43
|
+
## Contributing & Development
|
44
|
+
|
45
|
+
$ git clone https://github.com/mongomapper/mongomapper && cd mongomapper
|
46
|
+
$ bundle install
|
47
|
+
$ bundle exec rake
|
48
|
+
|
49
|
+
* Fork the project.
|
50
|
+
* Make your feature addition or bug fix. All specs should pass.
|
51
|
+
* Add specs for your changes. This is important so that it doesn't break in a future version.
|
52
|
+
* Commit, do not mess with Rakefile, version, or history. If you want to have your own version, that is fine but bump version in a commit by itself in another branch so a maintainer can ignore it when your pull request is merged.
|
53
|
+
* Send a pull request. Bonus points for topic branches.
|
54
|
+
|
55
|
+
## Problems or Questions?
|
56
|
+
|
57
|
+
Hit up the Google group: http://groups.google.com/group/mongomapper
|
58
|
+
|
59
|
+
## Copyright
|
60
|
+
|
61
|
+
Copyright (c) 2009-2021 MongoMapper. See LICENSE for details.
|
62
|
+
|
63
|
+
## Contributors
|
64
|
+
|
65
|
+
MongoMapper/Plucky is:
|
66
|
+
|
67
|
+
* John Nunemaker
|
68
|
+
* Chris Heald
|
69
|
+
* Scott Taylor
|
70
|
+
|
71
|
+
But all open source projects are a team effort and could not happen without
|
72
|
+
everyone who has contributed. See `CONTRIBUTORS` for the full list. Thank you!
|
data/examples/keys.rb
CHANGED
data/examples/modifiers/set.rb
CHANGED
@@ -10,7 +10,7 @@ class User
|
|
10
10
|
key :name, String
|
11
11
|
key :tags, Array
|
12
12
|
end
|
13
|
-
User.collection.
|
13
|
+
User.collection.drop # empties collection
|
14
14
|
|
15
15
|
john = User.create(:name => 'John', :tags => %w[ruby mongo], :age => 28)
|
16
16
|
bill = User.create(:name => 'Bill', :tags => %w[ruby mongo], :age => 30)
|
data/examples/querying.rb
CHANGED
@@ -10,7 +10,7 @@ class User
|
|
10
10
|
key :name, String
|
11
11
|
key :tags, Array
|
12
12
|
end
|
13
|
-
User.collection.
|
13
|
+
User.collection.drop # empties collection
|
14
14
|
|
15
15
|
User.create(:name => 'John', :tags => %w[ruby mongo], :age => 28)
|
16
16
|
User.create(:name => 'Bill', :tags => %w[ruby mongo], :age => 30)
|
data/examples/safe.rb
CHANGED
@@ -22,7 +22,7 @@ puts
|
|
22
22
|
begin
|
23
23
|
user = User.new(:email => 'nunemaker@gmail.com')
|
24
24
|
user.save(:safe => true)
|
25
|
-
rescue Mongo::OperationFailure => e
|
25
|
+
rescue Mongo::Error::OperationFailure => e
|
26
26
|
puts 'Mongo Operation failure raised because duplicate email was entered'
|
27
27
|
puts e.inspect
|
28
28
|
puts
|
@@ -37,7 +37,7 @@ User.safe
|
|
37
37
|
|
38
38
|
begin
|
39
39
|
User.create(:email => 'nunemaker@gmail.com')
|
40
|
-
rescue Mongo::OperationFailure => e
|
40
|
+
rescue Mongo::Error::OperationFailure => e
|
41
41
|
puts 'Mongo Operation failure raised because duplicate email was entered'
|
42
42
|
puts e.inspect
|
43
43
|
end
|
data/examples/scopes.rb
CHANGED
@@ -28,7 +28,7 @@ class User
|
|
28
28
|
key :name, String
|
29
29
|
key :tags, Array
|
30
30
|
end
|
31
|
-
User.collection.
|
31
|
+
User.collection.drop # empties collection
|
32
32
|
|
33
33
|
User.create(:name => 'John', :tags => %w[ruby mongo], :age => 28)
|
34
34
|
User.create(:name => 'Bill', :tags => %w[ruby mongo], :age => 30)
|
data/lib/mongo_mapper.rb
CHANGED
@@ -3,6 +3,7 @@ require 'plucky'
|
|
3
3
|
require 'active_support'
|
4
4
|
require 'active_support/core_ext'
|
5
5
|
require 'active_model'
|
6
|
+
require 'activemodel-serializers-xml'
|
6
7
|
require "mongo_mapper/railtie" if defined?(Rails)
|
7
8
|
|
8
9
|
I18n.load_path << File.expand_path('../mongo_mapper/locale/en.yml', __FILE__)
|
@@ -61,6 +62,7 @@ module MongoMapper
|
|
61
62
|
autoload :Scopes, 'mongo_mapper/plugins/scopes'
|
62
63
|
autoload :Serialization, 'mongo_mapper/plugins/serialization'
|
63
64
|
autoload :Stats, 'mongo_mapper/plugins/stats'
|
65
|
+
autoload :StrongParameters, 'mongo_mapper/plugins/strong_parameters'
|
64
66
|
autoload :Timestamps, 'mongo_mapper/plugins/timestamps'
|
65
67
|
autoload :Userstamps, 'mongo_mapper/plugins/userstamps'
|
66
68
|
autoload :Validations, 'mongo_mapper/plugins/validations'
|
@@ -68,24 +70,27 @@ module MongoMapper
|
|
68
70
|
|
69
71
|
module Associations
|
70
72
|
autoload :Base, 'mongo_mapper/plugins/associations/base'
|
71
|
-
autoload :Collection, 'mongo_mapper/plugins/associations/collection'
|
72
|
-
autoload :EmbeddedCollection, 'mongo_mapper/plugins/associations/embedded_collection'
|
73
73
|
autoload :ManyAssociation, 'mongo_mapper/plugins/associations/many_association'
|
74
74
|
autoload :SingleAssociation, 'mongo_mapper/plugins/associations/single_association'
|
75
75
|
autoload :BelongsToAssociation, 'mongo_mapper/plugins/associations/belongs_to_association'
|
76
76
|
autoload :OneAssociation, 'mongo_mapper/plugins/associations/one_association'
|
77
|
-
|
78
|
-
autoload :
|
79
|
-
autoload :
|
80
|
-
autoload :
|
81
|
-
autoload :
|
82
|
-
autoload :
|
83
|
-
autoload :
|
84
|
-
autoload :
|
85
|
-
autoload :
|
86
|
-
autoload :
|
87
|
-
autoload :
|
88
|
-
autoload :
|
77
|
+
|
78
|
+
autoload :Proxy, 'mongo_mapper/plugins/associations/proxy/proxy'
|
79
|
+
autoload :Collection, 'mongo_mapper/plugins/associations/proxy/collection'
|
80
|
+
autoload :EmbeddedCollection, 'mongo_mapper/plugins/associations/proxy/embedded_collection'
|
81
|
+
autoload :ManyDocumentsProxy, 'mongo_mapper/plugins/associations/proxy/many_documents_proxy'
|
82
|
+
autoload :BelongsToProxy, 'mongo_mapper/plugins/associations/proxy/belongs_to_proxy'
|
83
|
+
autoload :BelongsToPolymorphicProxy, 'mongo_mapper/plugins/associations/proxy/belongs_to_polymorphic_proxy'
|
84
|
+
autoload :ManyPolymorphicProxy, 'mongo_mapper/plugins/associations/proxy/many_polymorphic_proxy'
|
85
|
+
autoload :ManyEmbeddedProxy, 'mongo_mapper/plugins/associations/proxy/many_embedded_proxy'
|
86
|
+
autoload :ManyEmbeddedPolymorphicProxy, 'mongo_mapper/plugins/associations/proxy/many_embedded_polymorphic_proxy'
|
87
|
+
autoload :ManyDocumentsAsProxy, 'mongo_mapper/plugins/associations/proxy/many_documents_as_proxy'
|
88
|
+
autoload :OneProxy, 'mongo_mapper/plugins/associations/proxy/one_proxy'
|
89
|
+
autoload :OneAsProxy, 'mongo_mapper/plugins/associations/proxy/one_as_proxy'
|
90
|
+
autoload :OneEmbeddedProxy, 'mongo_mapper/plugins/associations/proxy/one_embedded_proxy'
|
91
|
+
autoload :OneEmbeddedPolymorphicProxy, 'mongo_mapper/plugins/associations/proxy/one_embedded_polymorphic_proxy'
|
92
|
+
autoload :InArrayProxy, 'mongo_mapper/plugins/associations/proxy/in_array_proxy'
|
93
|
+
autoload :InForeignArrayProxy, 'mongo_mapper/plugins/associations/proxy/in_foreign_array_proxy'
|
89
94
|
end
|
90
95
|
end
|
91
96
|
|
@@ -96,7 +101,4 @@ Dir[File.join(File.dirname(__FILE__), 'mongo_mapper', 'extensions', '*.rb')].eac
|
|
96
101
|
require extension
|
97
102
|
end
|
98
103
|
|
99
|
-
# FIXME: autoload with proxy is failing, need to investigate
|
100
|
-
require 'mongo_mapper/plugins/associations/proxy'
|
101
|
-
|
102
104
|
ActiveSupport.run_load_hooks(:mongo_mapper, MongoMapper)
|
@@ -4,13 +4,12 @@ require 'uri'
|
|
4
4
|
module MongoMapper
|
5
5
|
module Connection
|
6
6
|
@@connection = nil
|
7
|
-
@@database = nil
|
8
|
-
@@database_name = nil
|
9
7
|
@@config = nil
|
8
|
+
@@database = nil
|
10
9
|
|
11
10
|
# @api public
|
12
11
|
def connection
|
13
|
-
@@connection ||= Mongo::
|
12
|
+
@@connection ||= Mongo::Client.new ['127.0.0.1:27017']
|
14
13
|
end
|
15
14
|
|
16
15
|
def connection?
|
@@ -29,15 +28,12 @@ module MongoMapper
|
|
29
28
|
|
30
29
|
# @api public
|
31
30
|
def database=(name)
|
32
|
-
@@database =
|
33
|
-
@@database_name = name
|
31
|
+
@@database = connection.use(name).database
|
34
32
|
end
|
35
33
|
|
36
34
|
# @api public
|
37
35
|
def database
|
38
|
-
|
39
|
-
|
40
|
-
@@database ||= MongoMapper.connection.db(@@database_name)
|
36
|
+
@@database ||= connection.database
|
41
37
|
end
|
42
38
|
|
43
39
|
def config=(hash)
|
@@ -51,46 +47,28 @@ module MongoMapper
|
|
51
47
|
|
52
48
|
# @api private
|
53
49
|
def config_for_environment(environment)
|
54
|
-
|
55
|
-
return env if env['uri'].blank?
|
56
|
-
|
57
|
-
uri = URI.parse(env['uri'])
|
58
|
-
raise InvalidScheme.new('must be mongodb') unless uri.scheme == 'mongodb'
|
59
|
-
{
|
60
|
-
'host' => uri.host,
|
61
|
-
'port' => uri.port,
|
62
|
-
'database' => uri.path.gsub(/^\//, ''),
|
63
|
-
'username' => uri.user,
|
64
|
-
'password' => uri.password,
|
65
|
-
}
|
50
|
+
config[environment.to_s]
|
66
51
|
end
|
67
52
|
|
68
53
|
def connect(environment, options={})
|
69
54
|
raise 'Set config before connecting. MongoMapper.config = {...}' if config.blank?
|
70
|
-
env = config_for_environment(environment)
|
55
|
+
env = config_for_environment(environment).dup
|
56
|
+
addresses_or_uri = env.delete('hosts') ||
|
57
|
+
env.delete('uri') ||
|
58
|
+
[env.delete('host')].compact
|
71
59
|
|
72
60
|
if env['options'].is_a?(Hash)
|
73
|
-
options = env
|
74
|
-
end
|
75
|
-
options[:read] = options[:read].to_sym if options[:read].is_a? String
|
76
|
-
|
77
|
-
if env.key?('ssl')
|
78
|
-
options[:ssl] = env['ssl']
|
61
|
+
options = env.delete('options').symbolize_keys.merge(options)
|
79
62
|
end
|
63
|
+
#database etc are all options to Mongo::Client.new now
|
64
|
+
options = env.symbolize_keys.merge(options)
|
80
65
|
|
81
|
-
|
82
|
-
|
83
|
-
if env['hosts'].first.is_a?(String)
|
84
|
-
klass.new( env['hosts'], options )
|
85
|
-
else
|
86
|
-
klass.new( *env['hosts'].push(options) )
|
87
|
-
end
|
88
|
-
else
|
89
|
-
Mongo::MongoClient.new(env['host'], env['port'], options)
|
66
|
+
if options[:port]
|
67
|
+
raise "port should be specified as part of the host or uri"
|
90
68
|
end
|
91
69
|
|
92
|
-
|
93
|
-
MongoMapper.
|
70
|
+
options[:read] = options[:read].to_sym if options[:read].is_a? String
|
71
|
+
MongoMapper.connection = Mongo::Client.new(addresses_or_uri, options)
|
94
72
|
end
|
95
73
|
|
96
74
|
def setup(config, environment, options={})
|
@@ -18,7 +18,7 @@ class ObjectId
|
|
18
18
|
end
|
19
19
|
|
20
20
|
class BSON::ObjectId
|
21
|
-
alias_method :
|
21
|
+
alias_method :original_as_json, :as_json
|
22
22
|
|
23
23
|
def as_json(options=nil)
|
24
24
|
to_s
|
@@ -29,4 +29,8 @@ class BSON::ObjectId
|
|
29
29
|
end
|
30
30
|
|
31
31
|
alias to_str to_s
|
32
|
-
|
32
|
+
|
33
|
+
def original_to_json(*args)
|
34
|
+
original_as_json.to_json(*args)
|
35
|
+
end
|
36
|
+
end
|
@@ -6,7 +6,7 @@ module MongoMapper
|
|
6
6
|
attr_reader :name, :options, :query_options
|
7
7
|
|
8
8
|
# Options that should not be considered MongoDB query options/criteria
|
9
|
-
AssociationOptions = [:as, :class, :class_name, :dependent, :extend, :foreign_key, :in, :polymorphic, :autosave, :touch, :counter_cache]
|
9
|
+
AssociationOptions = [:as, :class, :class_name, :dependent, :extend, :foreign_key, :in, :from, :polymorphic, :autosave, :touch, :counter_cache, :ordered]
|
10
10
|
|
11
11
|
def initialize(name, options={}, &extension)
|
12
12
|
@name, @options, @query_options, @original_options = name.to_sym, {}, {}, options
|
@@ -28,13 +28,17 @@ module MongoMapper
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def as?
|
31
|
-
!!@options[:as]
|
31
|
+
!in_foreign_array? && !!@options[:as]
|
32
32
|
end
|
33
33
|
|
34
34
|
def in_array?
|
35
35
|
!!@options[:in]
|
36
36
|
end
|
37
37
|
|
38
|
+
def in_foreign_array?
|
39
|
+
!!@options[:from]
|
40
|
+
end
|
41
|
+
|
38
42
|
def embeddable?
|
39
43
|
klass.embeddable?
|
40
44
|
end
|
@@ -47,6 +51,10 @@ module MongoMapper
|
|
47
51
|
!!@options[:counter_cache]
|
48
52
|
end
|
49
53
|
|
54
|
+
def ordered?
|
55
|
+
!!@options[:ordered]
|
56
|
+
end
|
57
|
+
|
50
58
|
def type_key_name
|
51
59
|
"_type"
|
52
60
|
end
|
@@ -29,7 +29,7 @@ module MongoMapper
|
|
29
29
|
|
30
30
|
def add_touch_callbacks
|
31
31
|
name = self.name
|
32
|
-
method_name = "belongs_to_touch_after_save_or_destroy_for_#{name}"
|
32
|
+
method_name = :"belongs_to_touch_after_save_or_destroy_for_#{name}"
|
33
33
|
touch = options.fetch(:touch)
|
34
34
|
|
35
35
|
@model.send(:define_method, method_name) do
|