mongoid 4.0.0.rc1 → 4.0.0.rc2
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 +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/mongoid/contextual/memory.rb +11 -0
- data/lib/mongoid/interceptable.rb +15 -5
- data/lib/mongoid/serializable.rb +1 -1
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +4 -4
- data/spec/mongoid/contextual/memory_spec.rb +57 -0
- data/spec/mongoid/interceptable_spec.rb +1 -0
- data/spec/mongoid/serializable_spec.rb +18 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0047adcc376dc5ab66b47ee9134f3498c22926d2
|
4
|
+
data.tar.gz: c36d95ca80568bb70a33a472536e6689703b903c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53384fa62466c3142ae2b8f8040e42145d5c45624c476d3fec257fa3c13d5a3939e960fa91db71e1d7ddf68e7f9ede61c3789a5c100114713af4f59fede92407
|
7
|
+
data.tar.gz: f1a487e461294f61724d698a86487f406cce5e88be767915841cc2797267ba94d702094f74bccbbf576f46a5aa850044ef76e99f180617534c86da3d4b8aca9c
|
data/CHANGELOG.md
CHANGED
@@ -345,6 +345,9 @@ For instructions on upgrading to newer versions, visit
|
|
345
345
|
|
346
346
|
### Resolved Issues
|
347
347
|
|
348
|
+
* \#3676 Make pluck work with embedded associations
|
349
|
+
(Arthur Neves)
|
350
|
+
|
348
351
|
* \#2898 Dirty attribute methods now properly handle field aliases.
|
349
352
|
(Niels Ganser)
|
350
353
|
|
@@ -197,6 +197,17 @@ module Mongoid
|
|
197
197
|
self
|
198
198
|
end
|
199
199
|
|
200
|
+
def pluck(*fields)
|
201
|
+
fields = Array.wrap(fields)
|
202
|
+
documents.map do |doc|
|
203
|
+
if fields.size == 1
|
204
|
+
doc[fields.first]
|
205
|
+
else
|
206
|
+
fields.map { |n| doc[n] }.compact
|
207
|
+
end
|
208
|
+
end.compact
|
209
|
+
end
|
210
|
+
|
200
211
|
# Skips the provided number of documents.
|
201
212
|
#
|
202
213
|
# @example Skip the documents.
|
@@ -259,12 +259,22 @@ module Mongoid
|
|
259
259
|
send("_#{kind}_callbacks").each do |callback|
|
260
260
|
chain.append(callback) if callback.kind == place
|
261
261
|
end
|
262
|
-
|
263
|
-
|
264
|
-
|
262
|
+
|
263
|
+
if Gem::Version.new("4.1.0") <= Gem::Version.new(ActiveSupport::VERSION::STRING)
|
264
|
+
self.class.send :define_method, name do
|
265
|
+
runner = ActiveSupport::Callbacks::Filters::Environment.new(self, false, nil)
|
266
|
+
chain.compile.call(runner).value
|
265
267
|
end
|
266
|
-
protected
|
267
|
-
|
268
|
+
self.class.send :protected, name
|
269
|
+
else
|
270
|
+
class_eval <<-EOM
|
271
|
+
def #{name}()
|
272
|
+
#{chain.compile}
|
273
|
+
end
|
274
|
+
protected :#{name}
|
275
|
+
EOM
|
276
|
+
end
|
277
|
+
|
268
278
|
end
|
269
279
|
send(name)
|
270
280
|
end
|
data/lib/mongoid/serializable.rb
CHANGED
@@ -102,7 +102,7 @@ module Mongoid
|
|
102
102
|
attrs[name] = value ? value.serializable_hash(options) : nil
|
103
103
|
elsif names.include?(name) && !fields.has_key?(name)
|
104
104
|
attrs[name] = read_attribute(name)
|
105
|
-
|
105
|
+
elsif !attribute_missing?(name)
|
106
106
|
attrs[name] = send(name)
|
107
107
|
end
|
108
108
|
end
|
data/lib/mongoid/version.rb
CHANGED
@@ -21,12 +21,12 @@ development:
|
|
21
21
|
# read: secondary_preferred
|
22
22
|
|
23
23
|
# How many times Moped should attempt to retry an operation after
|
24
|
-
# failure. (default:
|
25
|
-
# max_retries:
|
24
|
+
# failure. (default: The number of nodes in the cluster)
|
25
|
+
# max_retries: 20
|
26
26
|
|
27
27
|
# The time in seconds that Moped should wait before retrying an
|
28
|
-
# operation on failure. (default:
|
29
|
-
# retry_interval:
|
28
|
+
# operation on failure. (default: 0.25)
|
29
|
+
# retry_interval: 0.25
|
30
30
|
# Configure Mongoid specific options. (optional)
|
31
31
|
options:
|
32
32
|
# Includes the root model name in json serialization. (default: false)
|
@@ -729,6 +729,63 @@ describe Mongoid::Contextual::Memory do
|
|
729
729
|
end
|
730
730
|
end
|
731
731
|
|
732
|
+
describe "#pluck" do
|
733
|
+
|
734
|
+
let(:hobrecht) do
|
735
|
+
Address.new(street: "hobrecht")
|
736
|
+
end
|
737
|
+
|
738
|
+
let(:friedel) do
|
739
|
+
Address.new(street: "friedel")
|
740
|
+
end
|
741
|
+
|
742
|
+
let(:criteria) do
|
743
|
+
Address.all.tap do |crit|
|
744
|
+
crit.documents = [ hobrecht, friedel ]
|
745
|
+
end
|
746
|
+
end
|
747
|
+
|
748
|
+
let(:context) do
|
749
|
+
described_class.new(criteria)
|
750
|
+
end
|
751
|
+
|
752
|
+
context "when plucking" do
|
753
|
+
|
754
|
+
let!(:plucked) do
|
755
|
+
context.pluck(:street)
|
756
|
+
end
|
757
|
+
|
758
|
+
it "returns the values" do
|
759
|
+
expect(plucked).to eq([ "hobrecht", "friedel" ])
|
760
|
+
end
|
761
|
+
end
|
762
|
+
|
763
|
+
context "when plucking a field that doesnt exist" do
|
764
|
+
|
765
|
+
context "when pluck one field" do
|
766
|
+
|
767
|
+
let(:plucked) do
|
768
|
+
context.pluck(:foo)
|
769
|
+
end
|
770
|
+
|
771
|
+
it "returns a empty array" do
|
772
|
+
expect(plucked).to eq([])
|
773
|
+
end
|
774
|
+
end
|
775
|
+
|
776
|
+
context "when pluck multiple fields" do
|
777
|
+
|
778
|
+
let(:plucked) do
|
779
|
+
context.pluck(:foo, :bar)
|
780
|
+
end
|
781
|
+
|
782
|
+
it "returns a empty array" do
|
783
|
+
expect(plucked).to eq([[], []])
|
784
|
+
end
|
785
|
+
end
|
786
|
+
end
|
787
|
+
end
|
788
|
+
|
732
789
|
describe "#skip" do
|
733
790
|
|
734
791
|
let(:hobrecht) do
|
@@ -231,6 +231,24 @@ describe Mongoid::Serializable do
|
|
231
231
|
)
|
232
232
|
end
|
233
233
|
end
|
234
|
+
|
235
|
+
context "when only two attributes are loaded" do
|
236
|
+
before do
|
237
|
+
person.save
|
238
|
+
end
|
239
|
+
|
240
|
+
let(:from_db) do
|
241
|
+
Person.only("_id", "username").first
|
242
|
+
end
|
243
|
+
|
244
|
+
let(:hash) do
|
245
|
+
from_db.serializable_hash
|
246
|
+
end
|
247
|
+
|
248
|
+
it "returns those two attributes only" do
|
249
|
+
expect(hash.keys).to eq(["_id", "username"])
|
250
|
+
end
|
251
|
+
end
|
234
252
|
end
|
235
253
|
|
236
254
|
context "when a model has dynamic fields" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0.
|
4
|
+
version: 4.0.0.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Durran Jordan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.0
|
19
|
+
version: '4.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.0
|
26
|
+
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: tzinfo
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 2.0.0.
|
47
|
+
version: 2.0.0.rc2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 2.0.0.
|
54
|
+
version: 2.0.0.rc2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: origin
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|