glebtv-mongoid_nested_set 0.4.3 → 0.5.0
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/Gemfile +8 -0
- data/glebtv-mongoid_nested_set.gemspec +3 -4
- data/lib/mongoid_nested_set/rebuild.rb +1 -2
- data/lib/mongoid_nested_set/update.rb +29 -30
- data/lib/mongoid_nested_set/version.rb +1 -1
- data/spec/mongoid.yml +7 -0
- data/spec/mongoid_nested_set_spec.rb +1 -5
- data/spec/spec_helper.rb +16 -13
- metadata +41 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 318065a4aa31f41caf097a9315ad0ef0a7d15af8
|
4
|
+
data.tar.gz: 665e6056dfbe4e764ca76f72f113784a2b0813cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d136b219b6ecdd8dd23f4a594210f7efe7b646288bb1a2ca27ffcc6a77548bc743d31e5e0205d95948a94349249c9dd402ea6e6feeb19af4cd80ffaa6c81ef9a
|
7
|
+
data.tar.gz: a6a94a0ba07c7361dda1f2eabaa29fed82962fa3b25a96b7116a464f3495c269c0f7f817203f828146c96e7acbe3115d8a46af61a9b2de01f1cebdcde867018a
|
data/Gemfile
CHANGED
@@ -3,6 +3,14 @@ source "http://rubygems.org"
|
|
3
3
|
#gem "activemodel", "~> 4.1.0.beta1"
|
4
4
|
#gem "mongoid", "~> 4.0.0.beta1"
|
5
5
|
|
6
|
+
#gem 'database_cleaner', github: 'glebtv/database_cleaner'
|
7
|
+
gem 'database_cleaner', path: '/data/database_cleaner'
|
8
|
+
|
9
|
+
gem 'mongo', github: 'mongodb/mongo-ruby-driver'
|
10
|
+
#gem 'mongoid', '~> 5.0.0.beta', github: 'mongodb/mongoid'
|
11
|
+
gem 'mongoid', '~> 5.0.0.beta', github: 'glebtv/mongoid'
|
12
|
+
#gem 'mongoid', '~> 5.0.0.beta', path: '/data/mongoid'
|
13
|
+
|
6
14
|
# Specify your gem's dependencies in glebtv-mongoid_nested_set.gemspec
|
7
15
|
gemspec
|
8
16
|
|
@@ -19,16 +19,15 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_runtime_dependency 'mongoid', [">=
|
22
|
+
s.add_runtime_dependency 'mongoid', [">= 5.0.0.beta", "< 6.0"]
|
23
23
|
|
24
24
|
s.add_development_dependency 'rake'
|
25
25
|
s.add_development_dependency 'rspec'
|
26
26
|
s.add_development_dependency 'bundler'
|
27
27
|
s.add_development_dependency 'simplecov'
|
28
28
|
s.add_development_dependency 'simplecov-rcov'
|
29
|
+
s.add_development_dependency 'mongoid-rspec', '2.3.0.beta'
|
29
30
|
|
30
|
-
s.add_development_dependency 'rspec-expectations', "~>
|
31
|
-
s.add_development_dependency 'rr'
|
32
|
-
s.add_development_dependency 'remarkable_mongoid'
|
31
|
+
s.add_development_dependency 'rspec-expectations', "~> 3.3"
|
33
32
|
end
|
34
33
|
|
@@ -22,9 +22,8 @@ module Mongoid::Acts::NestedSet
|
|
22
22
|
# set right
|
23
23
|
right = (indices[scope.call(node)] += 1)
|
24
24
|
|
25
|
-
node.class.collection.find(:_id => node.id).
|
25
|
+
node.class.collection.find(:_id => node.id).update_one(
|
26
26
|
{"$set" => {left_field_name => left, right_field_name => right}},
|
27
|
-
{:safe => true}
|
28
27
|
)
|
29
28
|
end
|
30
29
|
|
@@ -125,33 +125,32 @@ module Mongoid::Acts::NestedSet
|
|
125
125
|
left += width
|
126
126
|
end
|
127
127
|
|
128
|
-
scope_class.
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
end
|
128
|
+
client = scope_class.mongo_client
|
129
|
+
collection = client[scope_class.collection_name]
|
130
|
+
scope = nested_set_scope.remove_order_by
|
131
|
+
|
132
|
+
# allocate space for new move
|
133
|
+
collection.find(
|
134
|
+
scope.gte(left_field_name => bound).selector
|
135
|
+
).update_many("$inc" => { left_field_name => width })
|
136
|
+
|
137
|
+
collection.find(
|
138
|
+
scope.gte(right_field_name => bound).selector
|
139
|
+
).update_many("$inc" => { right_field_name => width })
|
140
|
+
|
141
|
+
# move the nodes
|
142
|
+
collection.find(
|
143
|
+
scope.and(left_field_name => {"$gte" => left}, right_field_name => {"$lt" => left + width}).selector
|
144
|
+
).update_many("$inc" => { left_field_name => distance, right_field_name => distance })
|
145
|
+
|
146
|
+
# remove the hole
|
147
|
+
collection.find(
|
148
|
+
scope.gt(left_field_name => right).selector
|
149
|
+
).update_many("$inc" => { left_field_name => -width })
|
150
|
+
|
151
|
+
collection.find(
|
152
|
+
scope.gt(right_field_name => right).selector
|
153
|
+
).update_many("$inc" => { right_field_name => -width })
|
155
154
|
|
156
155
|
self.mongoid_set(parent_field_name, new_parent)
|
157
156
|
self.reload_nested_set
|
@@ -188,7 +187,7 @@ module Mongoid::Acts::NestedSet
|
|
188
187
|
def update_self_and_descendants_depth
|
189
188
|
if depth?
|
190
189
|
scope_class.each_with_level(self_and_descendants) do |node, level|
|
191
|
-
node.
|
190
|
+
node.mongoid_set(:depth, level) unless node.depth == level
|
192
191
|
end
|
193
192
|
self.reload
|
194
193
|
end
|
@@ -214,12 +213,12 @@ module Mongoid::Acts::NestedSet
|
|
214
213
|
# update lefts and rights for remaining nodes
|
215
214
|
diff = right - left + 1
|
216
215
|
|
217
|
-
c = scope_class.
|
216
|
+
c = scope_class.where(
|
218
217
|
nested_set_scope.where(left_field_name.to_sym.gt => right).selector
|
219
218
|
)
|
220
219
|
mongoid_inc(c, left_field_name, -diff)
|
221
220
|
|
222
|
-
c = scope_class.
|
221
|
+
c = scope_class.where(
|
223
222
|
nested_set_scope.where(right_field_name.to_sym.gt => right).selector
|
224
223
|
)
|
225
224
|
mongoid_inc(c, right_field_name, -diff)
|
data/spec/mongoid.yml
ADDED
@@ -482,11 +482,7 @@ describe "A Mongoid::Document" do
|
|
482
482
|
end
|
483
483
|
|
484
484
|
it "cannot move a node to a non-existent target" do
|
485
|
-
|
486
|
-
@nodes[:mens].parent_id = Moped::BSON::ObjectId.new
|
487
|
-
else
|
488
|
-
@nodes[:mens].parent_id = BSON::ObjectId.new
|
489
|
-
end
|
485
|
+
@nodes[:mens].parent_id = BSON::ObjectId.new
|
490
486
|
expect {
|
491
487
|
@nodes[:mens].save
|
492
488
|
}.to raise_error(Mongoid::Errors::MongoidError, /possible.*(exist|found)/)
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
3
|
require 'rspec'
|
4
|
-
require '
|
4
|
+
require 'database_cleaner'
|
5
5
|
require 'active_support'
|
6
6
|
require 'active_support/deprecation'
|
7
7
|
require 'mongoid'
|
8
|
+
require 'mongoid-rspec'
|
8
9
|
require 'mongoid_nested_set'
|
9
|
-
require 'remarkable/mongoid'
|
10
10
|
|
11
11
|
if ENV['COVERAGE'] == 'yes'
|
12
12
|
require 'simplecov'
|
@@ -23,23 +23,26 @@ if ENV['COVERAGE'] == 'yes'
|
|
23
23
|
SimpleCov.start
|
24
24
|
end
|
25
25
|
|
26
|
-
module Mongoid::Acts::NestedSet::Matchers
|
27
|
-
end
|
28
|
-
|
29
|
-
#Mongoid.logger = Logger.new($stdout)
|
30
|
-
#Moped.logger = Logger.new($stdout)
|
31
|
-
#Moped.logger.level = Logger::DEBUG
|
32
|
-
|
33
26
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
34
27
|
Dir["#{File.dirname(__FILE__)}/models/*.rb"].each {|file| require file }
|
35
28
|
Dir["#{File.dirname(__FILE__)}/matchers/*.rb"].each {|file| require file }
|
36
29
|
|
37
|
-
|
38
|
-
|
39
|
-
|
30
|
+
#Mongo::Logger.logger.level = ::Logger::FATAL
|
31
|
+
|
32
|
+
Mongoid.load!("#{File.dirname(__FILE__)}/mongoid.yml", :test)
|
40
33
|
|
41
34
|
RSpec.configure do |config|
|
42
|
-
|
35
|
+
config.include Mongoid::Matchers, type: :model
|
36
|
+
|
37
|
+
config.before(:suite) do
|
38
|
+
DatabaseCleaner[:mongoid, {client: :default }]
|
39
|
+
DatabaseCleaner[:mongoid].strategy = :truncation
|
40
|
+
end
|
41
|
+
|
42
|
+
config.before(:each) do
|
43
|
+
DatabaseCleaner.clean
|
44
|
+
end
|
45
|
+
|
43
46
|
config.include(Mongoid::Acts::NestedSet::Matchers)
|
44
47
|
|
45
48
|
config.after(:each) do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glebtv-mongoid_nested_set
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GlebTV
|
@@ -9,140 +9,126 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-08-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
21
|
-
- - <
|
20
|
+
version: 5.0.0.beta
|
21
|
+
- - "<"
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: '
|
23
|
+
version: '6.0'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
|
-
- -
|
28
|
+
- - ">="
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version:
|
31
|
-
- - <
|
30
|
+
version: 5.0.0.beta
|
31
|
+
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '6.0'
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: rake
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
type: :development
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rspec
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: bundler
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
type: :development
|
70
70
|
prerelease: false
|
71
71
|
version_requirements: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
- !ruby/object:Gem::Dependency
|
77
77
|
name: simplecov
|
78
78
|
requirement: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
type: :development
|
84
84
|
prerelease: false
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
- !ruby/object:Gem::Dependency
|
91
91
|
name: simplecov-rcov
|
92
92
|
requirement: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
type: :development
|
98
98
|
prerelease: false
|
99
99
|
version_requirements: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
|
-
name: rspec
|
105
|
+
name: mongoid-rspec
|
106
106
|
requirement: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 2.3.0.beta
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
113
|
version_requirements: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - '='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 2.3.0.beta
|
118
118
|
- !ruby/object:Gem::Dependency
|
119
|
-
name:
|
120
|
-
requirement: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - '>='
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
type: :development
|
126
|
-
prerelease: false
|
127
|
-
version_requirements: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - '>='
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
- !ruby/object:Gem::Dependency
|
133
|
-
name: remarkable_mongoid
|
119
|
+
name: rspec-expectations
|
134
120
|
requirement: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
|
-
- -
|
122
|
+
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
124
|
+
version: '3.3'
|
139
125
|
type: :development
|
140
126
|
prerelease: false
|
141
127
|
version_requirements: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
|
-
- -
|
129
|
+
- - "~>"
|
144
130
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
131
|
+
version: '3.3'
|
146
132
|
description: Fully featured tree implementation for Mongoid using the nested set model
|
147
133
|
email:
|
148
134
|
- bt@brandonturner.net
|
@@ -150,12 +136,12 @@ executables: []
|
|
150
136
|
extensions: []
|
151
137
|
extra_rdoc_files: []
|
152
138
|
files:
|
153
|
-
- .document
|
154
|
-
- .gitignore
|
155
|
-
- .rspec
|
156
|
-
- .ruby-gemset
|
157
|
-
- .ruby-version
|
158
|
-
- .travis.yml
|
139
|
+
- ".document"
|
140
|
+
- ".gitignore"
|
141
|
+
- ".rspec"
|
142
|
+
- ".ruby-gemset"
|
143
|
+
- ".ruby-version"
|
144
|
+
- ".travis.yml"
|
159
145
|
- Gemfile
|
160
146
|
- LICENSE.txt
|
161
147
|
- README.markdown
|
@@ -186,6 +172,7 @@ files:
|
|
186
172
|
- spec/models/square_node.rb
|
187
173
|
- spec/models/test_document.rb
|
188
174
|
- spec/models/unscoped_node.rb
|
175
|
+
- spec/mongoid.yml
|
189
176
|
- spec/mongoid_nested_set_spec.rb
|
190
177
|
- spec/spec_helper.rb
|
191
178
|
homepage: http://github.com/glebtv/mongoid_nested_set
|
@@ -198,17 +185,17 @@ require_paths:
|
|
198
185
|
- lib
|
199
186
|
required_ruby_version: !ruby/object:Gem::Requirement
|
200
187
|
requirements:
|
201
|
-
- -
|
188
|
+
- - ">="
|
202
189
|
- !ruby/object:Gem::Version
|
203
190
|
version: '0'
|
204
191
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
192
|
requirements:
|
206
|
-
- -
|
193
|
+
- - ">="
|
207
194
|
- !ruby/object:Gem::Version
|
208
195
|
version: '0'
|
209
196
|
requirements: []
|
210
197
|
rubyforge_project: mongoid_nested_set
|
211
|
-
rubygems_version: 2.
|
198
|
+
rubygems_version: 2.4.5
|
212
199
|
signing_key:
|
213
200
|
specification_version: 4
|
214
201
|
summary: Nested set based tree implementation for Mongoid
|
@@ -223,5 +210,6 @@ test_files:
|
|
223
210
|
- spec/models/square_node.rb
|
224
211
|
- spec/models/test_document.rb
|
225
212
|
- spec/models/unscoped_node.rb
|
213
|
+
- spec/mongoid.yml
|
226
214
|
- spec/mongoid_nested_set_spec.rb
|
227
215
|
- spec/spec_helper.rb
|