mongoid-ancestry 0.2.3 → 0.3.0.rc
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/Gemfile.lock +10 -13
- data/README.md +7 -1
- data/lib/mongoid-ancestry/class_methods.rb +2 -2
- data/lib/mongoid-ancestry/instance_methods.rb +1 -1
- data/lib/mongoid-ancestry/version.rb +1 -1
- data/mongoid-ancestry.gemspec +1 -2
- data/spec/lib/ancestry_spec.rb +1 -1
- data/spec/lib/mongoid-ancestry/class_methods_spec.rb +1 -1
- data/spec/lib/mongoid-ancestry/instance_methods_spec.rb +4 -4
- data/spec/mongoid.yml +6 -0
- data/spec/spec_helper.rb +4 -7
- data/spec/support/models.rb +1 -1
- metadata +11 -29
data/Gemfile.lock
CHANGED
@@ -1,32 +1,29 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
mongoid-ancestry (0.
|
5
|
-
|
6
|
-
mongoid (>= 2.0)
|
4
|
+
mongoid-ancestry (0.3.0.rc)
|
5
|
+
mongoid (= 3.0.0.rc)
|
7
6
|
|
8
7
|
GEM
|
9
8
|
remote: http://rubygems.org/
|
10
9
|
specs:
|
11
|
-
activemodel (3.2.
|
12
|
-
activesupport (= 3.2.
|
10
|
+
activemodel (3.2.3)
|
11
|
+
activesupport (= 3.2.3)
|
13
12
|
builder (~> 3.0.0)
|
14
|
-
activesupport (3.2.
|
13
|
+
activesupport (3.2.3)
|
15
14
|
i18n (~> 0.6)
|
16
15
|
multi_json (~> 1.0)
|
17
|
-
bson (1.6.4)
|
18
|
-
bson_ext (1.6.4)
|
19
|
-
bson (~> 1.6.4)
|
20
16
|
builder (3.0.0)
|
21
17
|
diff-lcs (1.1.2)
|
22
18
|
i18n (0.6.0)
|
23
|
-
|
24
|
-
bson (~> 1.6.2)
|
25
|
-
mongoid (2.4.7)
|
19
|
+
mongoid (3.0.0.rc)
|
26
20
|
activemodel (~> 3.1)
|
27
|
-
|
21
|
+
moped (~> 1.0.0.rc)
|
22
|
+
origin (~> 1.0.0.rc)
|
28
23
|
tzinfo (~> 0.3.22)
|
24
|
+
moped (1.0.0.rc)
|
29
25
|
multi_json (1.3.6)
|
26
|
+
origin (1.0.0.rc)
|
30
27
|
rake (0.9.2.2)
|
31
28
|
rspec (2.5.0)
|
32
29
|
rspec-core (~> 2.5.0)
|
data/README.md
CHANGED
@@ -23,6 +23,12 @@ To apply Mongoid-ancestry to any Mongoid model, follow these simple steps:
|
|
23
23
|
|
24
24
|
Your model is now a tree!
|
25
25
|
|
26
|
+
## Mongoid compatibility
|
27
|
+
|
28
|
+
This gem only supports Mongoid 3.x starting with version 0.3.0.
|
29
|
+
|
30
|
+
If you want to use Mongoid version 2.x, you should either use this gem in a 0.2.x version or checkout the "mongoid-2.4-stable" branch. You can ask bundler to stick with 0.2.x versions of this gem by adding this to your Gemfile: `gem 'mongoid-ancestry', '~> 0.2.2'`
|
31
|
+
|
26
32
|
## Organising records into a tree
|
27
33
|
You can use the parent attribute to organise your records into a tree. If you have the id of the record you want
|
28
34
|
to use as a parent and don't want to fetch it, you can also use `parent_id`. Like any virtual model attributes,
|
@@ -220,7 +226,7 @@ The materialised path pattern requires Mongoid-ancestry to use a `regexp` condit
|
|
220
226
|
|
221
227
|
## Contact and copyright
|
222
228
|
|
223
|
-
It's a fork of [original ancestry](https://github.com/stefankroes/ancestry) gem but
|
229
|
+
It's a fork of [original ancestry](https://github.com/stefankroes/ancestry) gem but adapted to work with Mongoid.
|
224
230
|
|
225
231
|
All thanks should goes to Stefan Kroes for his great work.
|
226
232
|
|
@@ -23,7 +23,7 @@ module Mongoid
|
|
23
23
|
self.ancestry_field = opts[:ancestry_field]
|
24
24
|
|
25
25
|
self.field ancestry_field, :type => String
|
26
|
-
self.index ancestry_field
|
26
|
+
self.index({ ancestry_field => 1 })
|
27
27
|
|
28
28
|
# Create orphan strategy accessor and set to option or default (writer comes from DynamicClassMethods)
|
29
29
|
cattr_reader :orphan_strategy
|
@@ -167,7 +167,7 @@ module Mongoid
|
|
167
167
|
end
|
168
168
|
end
|
169
169
|
# ... save parent of this node in parents array if it exists
|
170
|
-
parents[node.id] = node.parent_id if
|
170
|
+
parents[node.id] = node.parent_id if where(:_id => node.parent_id).first
|
171
171
|
|
172
172
|
# Reset parent id in array to nil if it introduces a cycle
|
173
173
|
parent = parents[node.id]
|
data/mongoid-ancestry.gemspec
CHANGED
data/spec/lib/ancestry_spec.rb
CHANGED
@@ -80,7 +80,7 @@ describe MongoidAncestry do
|
|
80
80
|
end
|
81
81
|
|
82
82
|
it "should have STI support" do
|
83
|
-
subject.with_model :extra_columns => {:type =>
|
83
|
+
subject.with_model :extra_columns => {:type => 'String'} do |model|
|
84
84
|
subclass1 = Object.const_set 'Subclass1', Class.new(model)
|
85
85
|
(class << subclass1; self; end).send(:define_method, :model_name) do
|
86
86
|
Struct.new(:human, :underscore).new 'Subclass1', 'subclass1'
|
@@ -232,7 +232,7 @@ describe MongoidAncestry do
|
|
232
232
|
end
|
233
233
|
|
234
234
|
it "should build ancestry from parent ids" do
|
235
|
-
subject.with_model :skip_ancestry => true, :extra_columns => {:parent_id =>
|
235
|
+
subject.with_model :skip_ancestry => true, :extra_columns => {:parent_id => 'BSON::ObjectId'} do |model|
|
236
236
|
[model.create!].each do |parent1|
|
237
237
|
(Array.new(5) { model.create :parent_id => parent1.id }).each do |parent2|
|
238
238
|
(Array.new(5) { model.create :parent_id => parent2.id }).each do |parent3|
|
@@ -133,14 +133,14 @@ describe MongoidAncestry do
|
|
133
133
|
root1.parent = root2
|
134
134
|
root1.save!
|
135
135
|
root1.descendants.asc(:_id).map(&:to_param).should eql(descendants)
|
136
|
-
}.to change(root2.descendants, '
|
136
|
+
}.to change(root2.descendants, 'count').by(root1.subtree.count)
|
137
137
|
|
138
138
|
descendants = root2.descendants.asc(:_id).map(&:to_param)
|
139
139
|
expect {
|
140
140
|
root2.parent = root3
|
141
141
|
root2.save!
|
142
142
|
root2.descendants.asc(:_id).map(&:to_param).should eql(descendants)
|
143
|
-
}.to change(root3.descendants, '
|
143
|
+
}.to change(root3.descendants, 'count').by(root2.subtree.count)
|
144
144
|
|
145
145
|
descendants = root1.descendants.asc(:_id).map(&:to_param)
|
146
146
|
expect {
|
@@ -148,8 +148,8 @@ describe MongoidAncestry do
|
|
148
148
|
root1.parent = nil
|
149
149
|
root1.save!
|
150
150
|
root1.descendants.asc(:_id).map(&:to_param).should eql(descendants)
|
151
|
-
}.to change(root3.descendants, '
|
152
|
-
}.to change(root2.descendants, '
|
151
|
+
}.to change(root3.descendants, 'count').by(-root1.subtree.count)
|
152
|
+
}.to change(root2.descendants, 'count').by(-root1.subtree.count)
|
153
153
|
end
|
154
154
|
end
|
155
155
|
|
data/spec/mongoid.yml
ADDED
data/spec/spec_helper.rb
CHANGED
@@ -6,17 +6,14 @@ require 'rspec'
|
|
6
6
|
|
7
7
|
require 'mongoid-ancestry'
|
8
8
|
|
9
|
-
Mongoid.
|
10
|
-
|
11
|
-
config.master = Mongo::Connection.new('localhost', 27017,
|
12
|
-
:logger => logger).db('ancestry_test')
|
13
|
-
config.logger = logger
|
14
|
-
end
|
9
|
+
Mongoid.load!(File.expand_path('../mongoid.yml', __FILE__), 'test')
|
10
|
+
Mongoid.logger = Logger.new('log/test.log')
|
15
11
|
|
16
12
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
17
13
|
|
18
14
|
RSpec.configure do |config|
|
19
15
|
config.after :each do
|
20
|
-
|
16
|
+
# Drops all collections in the current environment
|
17
|
+
Mongoid::Sessions.default.drop
|
21
18
|
end
|
22
19
|
end
|
data/spec/support/models.rb
CHANGED
@@ -14,7 +14,7 @@ class MongoidAncestry
|
|
14
14
|
TestNode.send(:include, Mongoid::Ancestry) unless skip_ancestry
|
15
15
|
|
16
16
|
extra_columns.each do |name, type|
|
17
|
-
TestNode.send :field, name, :type => type.
|
17
|
+
TestNode.send :field, name, :type => type.constantize
|
18
18
|
end unless extra_columns.nil?
|
19
19
|
|
20
20
|
TestNode.has_ancestry options unless skip_ancestry
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-ancestry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.0.rc
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Stefan Kroes
|
@@ -10,40 +10,24 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-06-
|
13
|
+
date: 2012-06-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: mongoid
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
|
-
- -
|
20
|
+
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 3.0.0.rc
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
none: false
|
27
27
|
requirements:
|
28
|
-
- -
|
28
|
+
- - '='
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version:
|
31
|
-
- !ruby/object:Gem::Dependency
|
32
|
-
name: bson_ext
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
|
-
requirements:
|
36
|
-
- - ! '>='
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: '1.3'
|
39
|
-
type: :runtime
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
|
-
requirements:
|
44
|
-
- - ! '>='
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '1.3'
|
30
|
+
version: 3.0.0.rc
|
47
31
|
description: Organise Mongoid model into a tree structure
|
48
32
|
email:
|
49
33
|
- eagle.anton@gmail.com
|
@@ -72,6 +56,7 @@ files:
|
|
72
56
|
- spec/lib/ancestry_spec.rb
|
73
57
|
- spec/lib/mongoid-ancestry/class_methods_spec.rb
|
74
58
|
- spec/lib/mongoid-ancestry/instance_methods_spec.rb
|
59
|
+
- spec/mongoid.yml
|
75
60
|
- spec/spec_helper.rb
|
76
61
|
- spec/support/models.rb
|
77
62
|
homepage: http://github.com/skyeagle/mongoid-ancestry
|
@@ -89,16 +74,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
74
|
version: '0'
|
90
75
|
segments:
|
91
76
|
- 0
|
92
|
-
hash: -
|
77
|
+
hash: -4410323303637396168
|
93
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
79
|
none: false
|
95
80
|
requirements:
|
96
|
-
- - ! '
|
81
|
+
- - ! '>'
|
97
82
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
99
|
-
segments:
|
100
|
-
- 0
|
101
|
-
hash: -4473599239750644479
|
83
|
+
version: 1.3.1
|
102
84
|
requirements: []
|
103
85
|
rubyforge_project: mongoid-ancestry
|
104
86
|
rubygems_version: 1.8.24
|